Atualização:
Desde o WordPress 4.4. Agora, isso é suportado pelos métodos insert
, update
, replace
e delete
de wpdb
e o ticket # 15158 foi fechado como corrigido .
Obrigado a @dmsnell por comentando sobre essa atualização.
Por outro lado, o null
support em wpdb::prepare()
está atualmente fechado como wontfix no ticket # 12819 .
Resposta anterior:
NULL
não suportado:
Parece que você terá que escrever seu próprio SQL personalizado para atualizar o valor com NULL
.
Atualmente, NULL
não é suportado por $wpdb->prepare()
, que recebe a entrada por meio do vsprintf
Confira estes ingressos abertos do Trac:
Esses ingressos têm cerca de 4 anos, então eu não prenderei minha respiração até que isso seja suportado pelo núcleo; -)
Você deve dar uma olhada na fonte como sugerido @s_ha_dum.
Uma possível solução alternativa:
Se você é aventureiro, pode tentar o seguinte com o filtro 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' );
onde
/**
* Replace the 'NULL' string with NULL
*
* @param string $query
* @return string $query
*/
function wpse_143405_query( $query )
{
return str_ireplace( "'NULL'", "NULL", $query );
}
Você pode querer usar uma string mais original que 'NULL'
para substituir, talvez '###NULL###'
.