ปรับปรุง:
ตั้งแต่ WordPress 4.4 นี้ได้รับการสนับสนุนในขณะนี้โดยinsert
, update
, replace
และdelete
วิธีการwpdb
และตั๋ว# 15158ได้รับการปิดถาวร
ขอบคุณ @dmsnell สำหรับความคิดเห็นเกี่ยวกับการอัปเดตนั้น
บนมืออื่น ๆ ที่null
สนับสนุนในการwpdb::prepare()
ปิดให้บริการในปัจจุบันเป็น wontfixในตั๋ว# 12819
คำตอบก่อนหน้า:
NULL
ไม่รองรับ:
ดูเหมือนว่าคุณจะต้องมีการเขียน SQL NULL
ที่กำหนดเองของคุณเองเพื่อปรับปรุงค่าด้วย
ขณะนี้NULL
ยังไม่รองรับโดย$wpdb->prepare()
ใช้อินพุตจากฟังก์ชันการจัดรูปแบบvsprintf
ตรวจสอบตั๋ว Trac ที่เปิดอยู่เหล่านี้:
ตั๋วเหล่านี้มีอายุประมาณ 4 ปีดังนั้นฉันจะไม่กลั้นลมหายใจจนกว่าจะได้รับการสนับสนุนจากแกน ;-)
คุณควรตรวจสอบแหล่งที่มาตามที่ @s_ha_dum แนะนำ
วิธีแก้ปัญหาที่เป็นไปได้:
หากคุณชอบผจญภัยคุณสามารถลองใช้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' );
ที่ไหน
/**
* Replace the 'NULL' string with NULL
*
* @param string $query
* @return string $query
*/
function wpse_143405_query( $query )
{
return str_ireplace( "'NULL'", "NULL", $query );
}
คุณอาจต้องการใช้สตริงที่ไม่ซ้ำกันมากกว่า'NULL'
แทนที่อาจจะ'###NULL###'
แทน
NULL
ถูกเพิ่มเข้ามาในr34737ดังนั้นจึงไม่จำเป็นต้องมีวิธีแก้ปัญหาอีกต่อไป