Aggiornare:
Da WordPress 4.4. questo è ora supportato dai insert
, update
, replace
e delete
metodi di wpdb
e il biglietto # 15158 è stato chiuso come fisso .
Grazie a @dmsnell per aver commentato quell'aggiornamento .
D'altra parte, il null
supporto in wpdb::prepare()
è attualmente chiuso come wontfix nel ticket # 12819 .
Risposta precedente:
NULL
non supportato:
Sembra che dovrai scrivere il tuo SQL personalizzato per aggiornare il valore NULL
.
Attualmente NULL
non è supportato da $wpdb->prepare()
, che accetta l'input tramite la funzione di formattazione vsprintf .
Dai un'occhiata a questi biglietti Trac aperti:
Questi biglietti hanno circa 4 anni, quindi non trattengo il respiro fino a quando questo non viene supportato dal core ;-)
Dovresti dare un'occhiata alla fonte come suggerito da @s_ha_dum.
Una possibile soluzione alternativa:
Se sei avventuroso, puoi provare quanto segue con il query
filtro:
// 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' );
dove
/**
* Replace the 'NULL' string with NULL
*
* @param string $query
* @return string $query
*/
function wpse_143405_query( $query )
{
return str_ireplace( "'NULL'", "NULL", $query );
}
Potresti voler usare una stringa più unica di quella 'NULL'
da sostituire, forse '###NULL###'
invece.
NULL
stato aggiunto in r34737 , quindi non è più necessario un