Đặt giá trị thành NULL trong MySQL


132

Tôi muốn đặt một giá trị NULLnếu không có gì được đưa vào hộp văn bản ở dạng tôi đang gửi. Làm thế nào tôi có thể làm điều này xảy ra? Tôi đã thử chèn 'NULL'nhưng điều này chỉ thêm từ NULLvào trường.

Tôi không chắc mình nên cung cấp mã nào cho việc này, tôi chỉ đang viết một truy vấn CẬP NHẬT.


12
Bạn sẽ phải chèn từ null mà không có dấu ngoặc kép ..
Mike Christensen

Câu trả lời:


268

Đừng đặt NULLdấu ngoặc kép trong tuyên bố cập nhật của bạn. Điều này sẽ làm việc:

UPDATE table SET field = NULL WHERE something = something

Tương tự ở đây : Static analysis: 1 errors were found during analysis. Unrecognized keyword. (near "NULL" at position 35) SQL query: UPDATE programs SET flash = NULL. - Cập nhật: Chính WHEREđiều kiện sau đã gây ra sự cố!
Kai Noack

16

Có lẽ bạn đang trích dẫn 'NULL'. NULL là một từ dành riêng trong MySQL và có thể được chèn / cập nhật mà không có dấu ngoặc kép:

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

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

Tôi nghĩ rằng vấn đề là anh ấy đang sử dụng: 'NULL' thay vì NULL.
alfasin

Nhưng, với một chút cẩn thận, điều này có thể khắc phục các trường trống wanna-be-null hiện có: 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)";

nếu bạn đặt 'NULL'vào truy vấn của mình, thì bạn chỉ cần chèn một chuỗi 4 ký tự. Không có dấu ngoặc kép, NULLlà giá trị null thực tế.


5

Sử dụng NULL(không có dấu ngoặc kép xung quanh nó).

UPDATE users SET password = NULL where ID = 4

5

Bạn nên chèn null, không phải chuỗi 'NULL'.


3

Giả sử cột cho phép cài đặt null,

$mycolupdate = null; // no quotes

nên làm mánh khóe


1
... Giả sử rằng bạn không sử dụng $mycolupdatechuỗi ở giai đoạn sau.
Álvaro González

2

Các câu trả lời được đưa ra ở đây là tốt nhưng tôi vẫn đang vật lộn để đăng NULL chứ không phải số 0 trong bảng mysql.

Cuối cùng tôi lưu ý vấn đề là trong truy vấn chèn mà tôi đang sử dụng

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

Càng xa càng tốt.

Truy vấn chèn của tôi là xấu.

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

Tôi sửa truy vấn để đọc.

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

Vì vậy, số lượng $ nằm ngoài chuỗi chính. Bảng sql của tôi hiện được chấp nhận để ghi số lượng null thay vì 0


Tôi cũng sẽ khuyên bạn nên từ bỏ các hàm mysql_ không dùng nữa và chuyển sang mysqli hoặc, tùy chọn của tôi, PDO.
muttley91

2

Vấn đề bạn gặp phải rất có thể là do mysql phân biệt giữa null được viết bằng chữ in hoa và null được viết trong trường hợp nhỏ.

Vì vậy, nếu bạn đã sử dụng một câu lệnh cập nhật với null, nó sẽ không hoạt động. Nếu bạn đặt nó thành NULL, nó sẽ hoạt động tốt.

Cảm ơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.