这里的下半部分排序,但现在插入记录时出现问题。我有NULL
的file
值格式化为%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查询失败了。我的HS英语老师是对的......错过了一段时间可能是一个巨大的问题!
也许您的配置隐藏错误显示。你试过$wpdb->print_error();
吗?
如果要获取最后一个错误和最后一个查询,可以使用$ wpdb对象的这个属性:
$wpdb->last_error
会告诉你最后一个错误,如果有的话。
$wpdb->last_query
将帮助您显示最后一个查询(发生错误的位置)
我希望这会帮助你。
https://core.trac.wordpress.org/ticket/32315
其中一列输入可能比列大。 Wordpress检测到这一点,甚至不会将查询发送到数据库。
Diff中显示了一个wp-db的补丁,你可以输入它来获取last_error消息中的更多信息,这样它就不会为空。