更新:自WordPress 4.4以来。这现在由insert
, update
, replace
和delete
方法wpdb
还有票#15158 已关闭为已修复。
感谢@dmsnellcommenting 关于那个更新。
另一方面null
中的支持wpdb::prepare()
当前在票证中关闭为wontfix#12819.
上一个答案:
NULL
不支持:
看起来您必须编写自己的自定义SQL来更新值
NULL
.
目前NULL
不受支持$wpdb->prepare()
, 通过vsprintf 格式化函数。
查看这些开放的Trac票证:
这些票大约有4年的历史了,所以我不会屏住呼吸,直到它得到核心的支持;-)
您应该按照@s\\u ha\\u 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###\'
相反