$wpdb->插入不工作。没有错误信息
Posted
技术标签:
【中文标题】$wpdb->插入不工作。没有错误信息【英文标题】:$wpdb->insert not working. No Error Msg 【发布时间】:2014-01-03 13:11:27 【问题描述】:这里的下部已排序,但现在插入记录时出现问题。我将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 查询失败。我的高中英语老师是对的……错过月经可能是个大问题!
【问题讨论】:
【参考方案1】:如果你想得到最后一个错误和最后一个查询,你可以使用 $wpdb 对象的这个属性:
$wpdb->last_error
如果有错误,将显示最后一个错误。
$wpdb->last_query
将帮助您显示最后一个查询(发生错误的位置)
希望对你有所帮助。
【讨论】:
【参考方案2】:也许您的配置隐藏了错误显示。你试过$wpdb->print_error();
吗?
【讨论】:
是的,到处都是。在每个插入语句之后和if(!)
语句内部。它没有返回任何东西。
在其他几个地方添加了它,当然,发现了错误。错误的查询。谢谢你。
不会碰巧知道将数据插入到格式为blob
的列中的数据格式调用吗?需要一个空值,而%s
的字符串不起作用。
尝试使用exit()
强制php死机,在函数调用内部放置print_error的输出,没有办法不输出也不死【参考方案3】:
https://core.trac.wordpress.org/ticket/32315
其中一列输入可能大于该列。 Wordpress 检测到这一点,甚至不会将查询发送到数据库。
那里的 Diff 显示了 wp-db 的补丁,您可以在 last_error 消息中获取更多信息,这样它就不会为空。
【讨论】:
不错的利亚姆。很烦人的是 WP 没有这个块的错误信息。【参考方案4】:希望您已经定义了全局变量$wpdb
。
如果您的$wpdb
不起作用,并且没有显示任何错误,那么您必须尝试这三个步骤。
使用 with errors 函数打印您的错误。
echo $wpdb->last_error;
或
echo $wpdb->show_errors();
如果没有错误可见,那么您必须使用最后一个查询函数打印您的最后一个查询。
echo $wpdb->last_query();
复制并粘贴上一个查询到您的 Phpmyadmin > Your Database -> Table -> SQL tab,点击 Go 按钮,您一定会得到正确的解决方案(错误)。
【讨论】:
show_errors()
不需要echo
,它只是将类设置为显示错误。当我们激活它时会出现错误。以上是关于$wpdb->插入不工作。没有错误信息的主要内容,如果未能解决你的问题,请参考以下文章
mysqli_query() 没有响应,甚至 mysqli_error() 也没有给出错误信息