【问题标题】:Store form data into wordpress database将表单数据存储到 wordpress 数据库中
【发布时间】:2016-09-15 19:27:39
【问题描述】:

我创建了一个简单的 html 表单来测试,我如何在 wpdb 中插入数据。我知道如何在 PHP 中做到这一点,但在 wordpress 中我很困惑!

global $wpdb;
if (isset($_POST['submit'])) {
    $name = $_POST['r1s1']; //Here r1s1 is name of the form control
    $email = $_POST['r2s1'];
    $contact = $_POST['r3s1'];
    $address = $_POST['r5s1'];
    if ($name != '' || $email != '') {
        $post = $wpdb->insert(
                'table', array(
                    'feild' => $name,
                    'dev' => $email,
                    'tenant' => $contact,
                    'mod' => $address,
                ), array(
                    '%s',
                    '%s',
                    '%s',
                    '%s'
                )
        );
        echo $post;
        if ($post) {
            echo "<br/><br/><span>Data Inserted successfully...!!</span>";
        } else {
            echo "<br/><br/><span>Insertion Failed...!!</span>";
        }
    } else {
        echo "<p>Insertion Failed <br/> Some Fields are Blank....!!</p>";
    }
}

当我点击提交按钮时,它会显示消息insertion failed...!!(我正在通过回显打印的消息)。此代码是用模板编写的。我做错了什么?

【问题讨论】:

  • 在哪个表中插入这些数据
  • @Ankur Bhadania 我在 wordpress 数据库中创建的表。
  • 查看此链接以获取更多信息codex.wordpress.org/Class_Reference/wpdb
  • tenant 字段值 int 或字符串
  • 都是字符串值。我已经阅读了该法典!它只显示查询,它不显示如何与表单链接。

标签: php database wordpress


【解决方案1】:
global $wpdb;
$wpdb->insert( 'table_name', array( 'field_name' => $_POST['r1s1'], 'field_name' => $_POST['r2s1'],'field_name' => $_POST['r3s1'],'field_name' => $_POST['r4s1']) );

试试这个

【讨论】:

  • 它工作得非常好!但是为什么...我的代码也是正确的(Ankur Bhadania 在操作中告诉我他测试了我的代码及其工作)。 AND purvik7373 也像你一样给了我他的答案。他给了我他的测试代码和截图。为什么他们的代码在我的本地主机中不起作用(相同的代码在他的本地主机中起作用)。以及为什么您的代码对我有用!请解释..
【解决方案2】:

你可以试试下面的代码吗?

global $wpdb;
$table_name = $wpdb->prefix . "your_table_name";
if (isset($_POST['submit'])) {
    $name = $_POST['r1s1']; //Here r1s1 is name of the form control
    $email = $_POST['r2s1'];
    $contact = $_POST['r3s1'];
    $address = $_POST['r5s1'];
    $data = array(
        'feild' => $name,
        'dev' => $email,
        'tenant' => $contact,
        'mod' => $address
    );

    if ($name != '' || $email != '') {
        $result = $wpdb->insert($table_name, $data);          
        if ($result) {
            echo "<br/><br/><span>Data Inserted successfully...!!</span>";
        } else {
            echo "<br/><br/><span>Insertion Failed...!!</span>";
        }
    } else {
        echo "<p>Insertion Failed <br/> Some Fields are Blank....!!</p>";
    }
}

【讨论】:

  • 能否请您打印所有变量以确保变量具有值。例如:print_r($data); die;
  • 你的数据库表中有那些字段吗?例如:feilddevtenantmod
  • 是变量正在打印值,我的表包含所有这些字段。我知道字段的名称是没有意义的,因为这只是为了测试所以我没有太多的麻烦。
  • 嗨兄弟,我只是在我的本地主机中检查了上面的代码,它工作正常请交叉检查数据库字段类型。并检查您的数据库字段名称空间或其他内容。 screencast.com/t/XH1ODl7Oce7s
  • 是的,我给了我的表名。也许我会通过创建新表单来检查它!用这段代码测试一个新表单后我会告诉你
猜你喜欢
  • 1970-01-01
  • 2018-12-29
  • 2017-04-08
  • 2013-05-14
  • 1970-01-01
  • 2014-06-29
  • 2018-10-08
  • 1970-01-01
  • 2014-06-04
相关资源
最近更新 更多