Atualizar:
Desde o WordPress 4.4. este é agora suportado pelos insert, update, replacee deletemétodos de wpdbe o bilhete # 15158 foi fechado como fixo .
Agradecemos a @dmsnell por comentar sobre essa atualização.
Por outro lado, o nullsuporte em wpdb::prepare()está atualmente fechado como wontfix no ticket # 12819 .
Resposta anterior:
NULL não suportado:
Parece que você precisará escrever seu próprio SQL personalizado para atualizar o valor NULL.
Atualmente NULLnão é suportado por $wpdb->prepare(), que recebe a entrada através da função de formatação vsprintf .
Confira estes ingressos Trac abertos:
Esses ingressos têm cerca de 4 anos, então eu não prendi a respiração até que isso seja apoiado pelo núcleo ;-)
Você deve dar uma olhada na fonte, como @s_ha_dum sugeriu.
Uma possível solução alternativa:
Se você é aventureiro, tente o seguinte com o queryfiltro:
// 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 sequência mais exclusiva do 'NULL'que substituir, talvez em '###NULL###'vez disso.
NULLfoi adicionado em r34737 , por isso não há mais qualquer necessidade de uma solução alternativa