繁体   English   中英

$wpdb->插入不工作。 没有错误信息

[英]$wpdb->insert not working. No Error Msg

此处的下部已排序,但现在插入记录时出现问题。 我将fileNULL值格式化为字符串的%s ,但它没有插入NULL它正在插入[BLOB - 0B] mySQL 表中的列格式是longblob 有任何想法吗?


这是我第一次使用$wpdb->insert ,看起来我错过了一些东西。

这是我正在尝试使用的循环。 数组中当前有 2 个时间戳。

for ( $i = 0; $i < count($timestamps); $i++ ) {
$working_time = $timestamps[$i];
$working_form = $formnames[$i];

$status_data = array(
    'submit_time' => $working_time,
    'form_name' => $working_form,
    'field_name' => 'lead_status',
    'field_value' => 'new',
    'field_order' => 10001,
    'file' => NULL
);
$status_data_types = array(
    '%f',
    '%s',
    '%s',
    '%s',
    '%d',
    '%s'
);

$result = $wpdb->get_results("SELECT field_value FROM ".$leadtable." WHERE submit_time = ".$working_time);

if(!$result) {              
    $insert = $wpdb->insert($leadtable, $status_data, $status_data_types);
    if( !$insert ) {
            echo 'didn\'t work';
        }
}
}

我知道$working_time$working_form都设置正确。 $working_time是一个长浮点数,例如1387175380.9600$working_form是一个字符串。

即使通过if( !$insert )检查也没有返回任何内容,所以我猜它在那之前的某个地方出错了。 我知道if( !$result )将返回 true,因为该数据尚不存在。

发现问题。 由于错过了一段时间,get_results 查询失败。 我的高中英语老师是对的......错过的时期可能是一个巨大的问题!

如果你想得到最后一个错误和最后一个查询,你可以使用$wpdb对象的这个属性:

$wpdb->last_error 

将显示最后一个错误,如果你有一个。

$wpdb->last_query 

将帮助您显示最后一个查询(发生错误的位置)

我希望这会帮助你。

也许您的配置隐藏了错误显示。 你试过$wpdb->print_error(); ?

https://core.trac.wordpress.org/ticket/323​​15

其中一列输入可能大于该列。 Wordpress 检测到这一点,甚至不会将查询发送到数据库。

那里的 Diff 显示了 wp-db 的补丁,您可以输入以在 last_error 消息中获取更多信息,因此它不会为空。

在此处输入图像描述

希望您已经定义了全局变量$wpdb

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

  1. 使用错误函数打印您的错误。

    echo $wpdb->last_error;

    或者

    echo $wpdb->show_errors;

  2. 如果没有错误可见,那么您必须使用最后一个查询功能打印您的最后一个查询。

    echo $wpdb->last_query;

  3. 将您的最后一个查询复制并粘贴到您的 Phpmyadmin > Your Database -> Table -> SQL 选项卡中,单击 Go 按钮,您肯定会在其中得到正确的解决方案(错误)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM