Memperbarui:
Sejak WordPress 4.4. ini sekarang didukung oleh insert
, update
, replace
dan delete
metode wpdb
dan tiket # 15.158 telah ditutup sebagai diperbaiki .
Terima kasih kepada @dmsnell karena berkomentar tentang pembaruan itu.
Di sisi lain, null
dukungan di wpdb::prepare()
saat ini ditutup sebagai wontfix di tiket # 12819 .
Jawaban sebelumnya:
NULL
tidak didukung:
Sepertinya Anda harus menulis SQL sendiri untuk memperbarui nilainya NULL
.
Saat NULL
ini tidak didukung oleh $wpdb->prepare()
, yang mengambil input melalui fungsi format vsprintf .
Lihat tiket Trac terbuka ini:
Tiket ini berusia sekitar 4 tahun, jadi saya tidak akan menahan nafas sampai ini didukung oleh inti ;-)
Anda harus melihat sumbernya seperti yang disarankan @s_ha_dum.
Solusi yang mungkin:
Jika Anda berjiwa petualang, Anda dapat mencoba yang berikut dengan query
filter:
// 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' );
dimana
/**
* Replace the 'NULL' string with NULL
*
* @param string $query
* @return string $query
*/
function wpse_143405_query( $query )
{
return str_ireplace( "'NULL'", "NULL", $query );
}
Anda mungkin ingin menggunakan string yang lebih unik daripada 'NULL'
mengganti, mungkin '###NULL###'
sebagai gantinya.
NULL
telah ditambahkan di r34737 , sehingga tidak ada lagi kebutuhan untuk penyelesaian masalah