Mise à jour:
Depuis WordPress 4.4. ceci est maintenant pris en charge par les insert, update, replaceet les deleteméthodes de wpdbet le billet # 15158 a été fermé comme fixe .
Merci à @dmsnell d'avoir commenté cette mise à jour.
D'un autre côté, le nullsupport dans wpdb::prepare()est actuellement fermé en tant que wontfix dans le ticket # 12819 .
Réponse précédente:
NULL non supporté:
Il semble que vous devrez écrire votre propre SQL personnalisé pour mettre à jour la valeur avec NULL.
Actuellement, NULLn'est pas pris en charge par $wpdb->prepare(), qui prend l'entrée via la fonction de formatage vsprintf .
Découvrez ces billets Trac ouverts:
Ces billets ont environ 4 ans, donc je ne retiendrais pas mon souffle tant que cela ne serait pas soutenu par le noyau ;-)
Vous devriez jeter un œil à la source comme l'a suggéré @s_ha_dum.
Une solution possible:
Si vous êtes aventureux, vous pouvez essayer ce qui suit avec le queryfiltre:
// 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' );
où
/**
* Replace the 'NULL' string with NULL
*
* @param string $query
* @return string $query
*/
function wpse_143405_query( $query )
{
return str_ireplace( "'NULL'", "NULL", $query );
}
Vous voudrez peut-être utiliser une chaîne plus unique que 'NULL'remplacer, peut-être à la '###NULL###'place.
NULLété ajoutée dans r34737 , il n'est donc plus nécessaire de contourner le