wpdb->insert not working

时间:2015-09-23 作者:momn99

EDIT: Rewrote the page from scratch and have been unable to figure out the differences. The new page works as expected.

在这里和Wordpress上检查了多个问题。组织还没有运气。下面是我在多个页面中使用的代码,用于获取旧记录并将其插入数据库(这些页面上没有问题)。页面中还有更多代码,但这就是我遇到的问题。它在一页上不起作用。

即使使用$wpdb->show\\u errors(),我也没有收到任何错误;我得到的唯一输出是在使用$wpdb->print\\u error()之后,这将提供以下输出:

`WordPress database error: []

SHOW FULL COLUMNS FROM `wp_posts`
$新建\\u id=$wpdb->插入\\u id$此时的new\\u id为0,因为数据库中没有插入任何内容(通过PHPMyAdmin验证)。

我试图指出我在插入中传递的数据类型(通过\'%1!\'等的第三个数组),但得到了相同的结果。

如有其他测试或解决方法的建议,将不胜感激。

=====================

function transfer_officer($old_record) {

global $wpdb;
$wpdb->show_errors();

$status = \'publish\';
$old_id = $old_record[0];
$name = $old_record[1];
$post_date = date(\'Y-m-d h:i:s\');

$post_data = array(
    \'post_author\' => 1,
    \'post_date\' => $post_date,
    \'post_date_gmt\' => $post_date,
    \'post_content\' => \'\',
    \'post_title\' => $name,
    \'post_excerpt\' => \'\',
    \'post_status\' => $status,
    \'comment_status\' => \'closed\',
    \'ping_status\' => \'closed\',
    \'post_password\' => \'\',
    \'post_name\' => officer_name_to_slug($name),
    \'to_ping\' => \'\',
    \'pinged\' => \'\',
    \'post_modified\' => $post_date,
    \'post_modified_gmt\' => $post_date,
    \'post_content_filtered\' => \'\',
    \'post_parent\' => 0,
    \'menu_order\' => 0,
    \'post_type\' => \'rb_board_officers_posts\',
    \'post_mime_type\' => \'\',
    \'comment_count\' => 0
);


//put into post table
$wpdb->insert(\'wp_posts\', $post_data);
$wpdb->print_error();
var_dump($wpdb);

$new_id = $wpdb->insert_id;

3 个回复
SO网友:John Joseph Adigue

我也有同样的问题。

Solution 1:删除数据。。如果值的长度大于数据库中定义的字段长度,Wordpress将拒绝查询。

在insert查询中post_type 字段超出了20个字符的限制。

Solution 2:使用$wpdb->查询方法

SO网友:Rocky Mehta

希望您定义全局变量=$wpdb。

如果您的$wpdb不工作,也没有显示任何错误,那么您必须尝试以下三个步骤。

使用with errors函数打印错误。

echo $wpdb->last_error;

or

echo $wpdb->show_errors();

如果没有可见错误,则必须使用with last query功能打印上次查询。

echo $wpdb->last_query();

  • 在Phpmyadmin>数据库->表->SQL选项卡中复制并粘贴上一个查询,单击Go按钮,肯定会得到正确的解决方案(错误)。

    谢谢,

    洛基·梅塔。

  • SO网友:Dave McCourt

    您是否尝试过使用手动输入的数据来查看是否插入了这些数据?只是做一些东西来替换变量。还要检查post\\u作者是否具有插入帖子的权限。

    另一个选项是尝试wp\\u insert\\u post(),看看是否有效。