Cập nhật:
Kể từ WordPress 4.4. này ngay bây giờ được hỗ trợ bởi insert
, update
, replace
và delete
các phương pháp wpdb
và vé # 15.158 đã bị đóng cửa như cố định .
Cảm ơn @dmsnell đã bình luận về bản cập nhật đó.
Mặt khác, null
hỗ trợ trong wpdb::prepare()
hiện đang đóng dưới dạng wontfix trong vé # 12819 .
Câu trả lời trước:
NULL
không được hỗ trợ:
Có vẻ như bạn sẽ phải viết SQL tùy chỉnh của riêng mình để cập nhật giá trị NULL
.
Hiện tại NULL
không được hỗ trợ bởi $wpdb->prepare()
, có đầu vào thông qua chức năng định dạng vsprintf .
Kiểm tra các vé Trac mở này:
Những vé này khoảng 4 tuổi, vì vậy tôi sẽ không nín thở cho đến khi điều này được hỗ trợ bởi cốt lõi ;-)
Bạn nên xem nguồn như @s_ha_dum đề xuất.
Một cách giải quyết có thể:
Nếu bạn thích phiêu lưu, bạn có thể thử cách sau với query
bộ lọc:
// 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' );
Ở đâu
/**
* Replace the 'NULL' string with NULL
*
* @param string $query
* @return string $query
*/
function wpse_143405_query( $query )
{
return str_ireplace( "'NULL'", "NULL", $query );
}
Bạn có thể muốn sử dụng một chuỗi độc đáo hơn 'NULL'
để thay thế, có lẽ '###NULL###'
thay vào đó.
NULL
đã được thêm vào trong r34737 , vì vậy không còn cần phải có cách giải quyết nữa