Обновить:
Начиная с WordPress 4.4. это теперь поддерживается insert, update, replaceи deleteметоды wpdbи билет # 15158 был закрыт , как фиксированный .
Спасибо @dmsnell за комментарии об этом обновлении.
С другой стороны, nullподдержка в wpdb::prepare()настоящее время закрыта как wontfix в тикете # 12819 .
Предыдущий ответ:
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была добавлена в r34737 , так что больше нет необходимости в