[英]$wpdb->insert not working. No Error Msg
此处的下部已排序,但现在插入记录时出现问题。 我将file
的NULL
值格式化为字符串的%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/32315
其中一列输入可能大于该列。 Wordpress 检测到这一点,甚至不会将查询发送到数据库。
那里的 Diff 显示了 wp-db 的补丁,您可以输入以在 last_error 消息中获取更多信息,因此它不会为空。
希望您已经定义了全局变量$wpdb
。
如果您的$wpdb
不工作,也没有显示任何错误,那么您必须尝试这三个步骤。
使用错误函数打印您的错误。
echo $wpdb->last_error;
或者
echo $wpdb->show_errors;
如果没有错误可见,那么您必须使用最后一个查询功能打印您的最后一个查询。
echo $wpdb->last_query;
将您的最后一个查询复制并粘贴到您的 Phpmyadmin > Your Database -> Table -> SQL 选项卡中,单击 Go 按钮,您肯定会在其中得到正确的解决方案(错误)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.