ตั้งค่าเป็น NULL ใน MySQL


134

ฉันต้องการตั้งค่าเป็นNULLถ้าไม่มีอะไรใส่ลงในกล่องข้อความในแบบฟอร์มที่ฉันกำลังส่ง ฉันจะทำให้สิ่งนี้เกิดขึ้นได้อย่างไร ฉันได้ลองแทรกแล้ว'NULL'แต่เพียงแค่เพิ่มคำNULLลงในฟิลด์

ฉันไม่แน่ใจว่าควรใส่รหัสอะไรสำหรับสิ่งนี้ฉันแค่เขียนแบบสอบถาม UPDATE


12
คุณจะต้องใส่คำnull โดยไม่มีเครื่องหมายคำพูด ..
Mike Christensen

คำตอบ:


270

อย่าใส่NULLเครื่องหมายคำพูดไว้ในใบแจ้งการอัปเดตของคุณ สิ่งนี้ควรใช้งานได้:

UPDATE table SET field = NULL WHERE something = something

เหมือนกันที่นี่: Static analysis: 1 errors were found during analysis. Unrecognized keyword. (near "NULL" at position 35) SQL query: UPDATE programs SET flash = NULL. - อัปเดต: เป็นWHEREเงื่อนไขต่อไปนี้ที่ทำให้เกิดปัญหา!
Kai Noack

16

คุณอาจอ้างถึง "NULL" NULL เป็นคำสงวนใน MySQL และสามารถแทรก / อัปเดตโดยไม่มีเครื่องหมายคำพูด:

INSERT INTO user (name, something_optional) VALUES ("Joe", NULL);
UPDATE user SET something_optional = NULL;

10
UPDATE MyTable
SET MyField = NULL
WHERE MyField = ''

ฉันคิดว่าปัญหาคือเขาใช้: 'NULL' แทน NULL
Nir Alfasi

แต่ด้วยความระมัดระวังสิ่งนี้สามารถแก้ไขช่องว่าง wanna-be-null ที่มีอยู่ได้: P
Erenor Paz

6
if (($_POST['nullfield'] == 'NULL') || ($_POST['nullfield'] == '')) {
   $val = 'NULL';
} else {
   $val = "'" . mysql_real_escape_string($_POST['nullfield']) . "'";
}

$sql = "INSERT INTO .... VALUES ($val)";

ถ้าคุณใส่'NULL'ลงในแบบสอบถามของคุณคุณก็แค่แทรกสตริง 4 อักขระ หากไม่มีเครื่องหมายคำพูดNULLเป็นค่าว่างที่แท้จริง




3

สมมติว่าคอลัมน์อนุญาตการตั้งค่าว่าง

$mycolupdate = null; // no quotes

ควรทำเคล็ดลับ


1
... สมมติว่าคุณไม่ได้แคสต์$mycolupdateเป็นสตริงในภายหลัง
ÁlvaroGonzález

2

คำตอบที่ให้ไว้ที่นี่ดี แต่ฉันยังคงดิ้นรนเพื่อโพสต์ NULL และไม่ใช่ศูนย์ในตาราง mysql

ในที่สุดฉันก็สังเกตว่าปัญหาอยู่ในแบบสอบถามแทรกที่ฉันใช้

   $quantity= "NULL";
   $itemname = "TEST";

จนถึงตอนนี้ดีมาก

ข้อความค้นหาของฉันไม่ถูกต้อง

   mysql_query("INSERT INTO products(quantity,itemname) 
   VALUES ('$quantity','$itemname')");

ฉันแก้ไขแบบสอบถามเพื่ออ่าน

   mysql_query("INSERT INTO products(quantity,itemname) 
   VALUES ('".$quantity."','$itemname')");

ดังนั้น $ quantity จึงอยู่นอกสตริงหลัก ตาราง sql ของฉันได้รับการยอมรับในการบันทึกปริมาณว่างแทน 0


ฉันขอแนะนำให้ละทิ้งฟังก์ชัน mysql_ ที่เลิกใช้แล้วและเปลี่ยนไปใช้ mysqli หรือค่ากำหนด PDO
muttley91

2

ปัญหาที่คุณพบน่าจะเป็นเพราะ mysql แยกความแตกต่างระหว่าง null ที่เขียนด้วยตัวพิมพ์ใหญ่และ null ที่เขียนด้วยตัวพิมพ์เล็ก

ดังนั้นหากคุณใช้คำสั่ง update ด้วย null มันจะไม่ทำงาน หากคุณตั้งค่าเป็น NULL ก็จะทำงานได้ดี

ขอบคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.