Actualización:
Desde WordPress 4.4. ahora es compatible con los métodos insert
, update
, replace
y delete
de wpdb
y el ticket # 15158 se ha cerrado como se corrigió .
Gracias a @dmsnell por comentando sobre esa actualización.
Por otra parte, el soporte null
en wpdb::prepare()
está actualmente cerrado como wontfix en el ticket # 12819 .
Respuesta anterior:
NULL
no es compatible:
Parece que tendrá que escribir su propio SQL personalizado para actualizar el valor con NULL
.
Actualmente NULL
no es compatible con $wpdb->prepare()
, que lleva la entrada a través de vsprintf función de formato.
Echa un vistazo a estas entradas abiertas de Trac:
Estas entradas tienen aproximadamente 4 años, por lo que no contendría la respiración hasta que el núcleo las respalde ;-)
Debería echar un vistazo a la fuente como se sugiere @s_ha_dum.
Una posible solución:
Si eres aventurero, puedes probar lo siguiente con el 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' );
donde
/**
* Replace the 'NULL' string with NULL
*
* @param string $query
* @return string $query
*/
function wpse_143405_query( $query )
{
return str_ireplace( "'NULL'", "NULL", $query );
}
Es posible que desee utilizar una cadena más exclusiva que 'NULL'
para reemplazar, tal vez '###NULL###'
en su lugar.