更新:
自WordPress 4.4起。现在insert
,票证#15158已被关闭update
,replace
并且已通过,和delete
方法固定支持。wpdb
感谢@dmsnell 对此更新发表评论。
另一方面,中的null
支持wpdb::prepare()
当前已关闭,因为 票据#12819中的willtfix。
先前的答案:
NULL
不支持:
看来您必须编写自己的自定义SQL才能使用来更新值NULL
。
当前NULL
不支持$wpdb->prepare()
,它通过vsprintf格式化功能获取输入。
查看以下打开的Trac门票:
这些票大约有4岁了,所以我不会屏住呼吸,直到得到核心支持;-)
您应该按照@s_ha_dum的建议查看源代码。
可能的解决方法:
如果您喜欢冒险,可以尝试使用以下query
过滤器:
// Add a filter to replace the 'NULL' string with NULL
add_filter( 'query', 'wpse_143405_query' );
global $wpdb;
$wpdb->update(
'table',
array(
'status' => 'NULL',
),
array( 'id' => 1 )
);
// Remove the filter again:
remove_filter( 'query', 'wpse_143405_query' );
哪里
/**
* Replace the 'NULL' string with NULL
*
* @param string $query
* @return string $query
*/
function wpse_143405_query( $query )
{
return str_ireplace( "'NULL'", "NULL", $query );
}
您可能想要使用比'NULL'
替换更唯一的字符串,'###NULL###'
而不是替换。
NULL
中增加了对设置的支持,因此不再需要任何解决方法