Обновить:
Начиная с 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 , так что больше нет необходимости в