Tetapkan nilai ke NULL di MySQL


132

Saya ingin nilai ditetapkan NULLjika tidak ada yang dimasukkan ke dalam kotak teks dalam formulir yang saya kirimkan. Bagaimana saya bisa mewujudkannya? Saya sudah mencoba memasukkan 'NULL'tetapi ini hanya menambahkan kata NULLke dalam bidang.

Saya tidak yakin kode apa yang harus saya berikan untuk ini, saya hanya menulis kueri UPDATE.


12
Anda harus memasukkan kata null tanpa tanda kutip ..
Mike Christensen

Jawaban:


268

Jangan memasukkan NULLkutipan di dalam pernyataan pembaruan Anda. Ini seharusnya bekerja:

UPDATE table SET field = NULL WHERE something = something

Sama di sini: Static analysis: 1 errors were found during analysis. Unrecognized keyword. (near "NULL" at position 35) SQL query: UPDATE programs SET flash = NULL. - Pembaruan: Itu adalah WHEREkondisi berikut yang menyebabkan masalah!
Kai Noack

16

Anda mungkin mengutip 'NULL'. NULL adalah kata yang dilindungi undang-undang di MySQL, dan dapat dimasukkan / diperbarui tanpa tanda kutip:

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

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

Saya pikir masalahnya adalah dia menggunakan: 'NULL' bukannya NULL.
Nir Alfasi

Tapi, dengan hati-hati, ini bisa memperbaiki bidang kosong yang ingin menjadi null yang ada: 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)";

jika Anda memasukkan 'NULL'ke dalam kueri Anda, maka Anda hanya memasukkan string 4 karakter. Tanpa tanda kutip, NULLadalah nilai nol aktual.


5

Gunakan NULL(tanpa tanda kutip di sekitarnya).

UPDATE users SET password = NULL where ID = 4

5

Anda harus memasukkan null, bukan string 'NULL'.


3

Dengan asumsi kolom memungkinkan pengaturan nol,

$mycolupdate = null; // no quotes

harus melakukan trik


1
... dengan asumsi bahwa Anda tidak dilemparkan $mycolupdateke string pada tahap berikutnya.
Álvaro González

2

Jawaban yang diberikan di sini bagus tetapi saya masih berjuang untuk memposting NULL dan bukan nol di tabel mysql.

Akhirnya saya perhatikan bahwa masalahnya ada pada permintaan memasukkan yang saya gunakan

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

Sejauh ini baik.

Permintaan memasukkan saya salah.

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

Saya mengoreksi kueri untuk dibaca.

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

Jadi $ quantity berada di luar string utama. Tabel sql saya sekarang diterima untuk merekam kuantitas nol, bukan 0


Saya juga merekomendasikan meninggalkan fungsi mysql_ yang sudah usang dan beralih ke mysqli atau, preferensi saya, PDO.
muttley91

2

Masalah yang Anda miliki kemungkinan besar karena mysql membedakan antara nol yang ditulis dengan huruf kapital dan nol yang ditulis dalam huruf kecil.

Jadi jika Anda menggunakan pernyataan pembaruan dengan null, itu tidak akan berfungsi. Jika Anda mengaturnya ke NULL, itu akan berfungsi dengan baik.

Terima kasih.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.