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.

muttley91
sumber
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
Fosco
sumber
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;
Andrew Ensley
sumber
10
UPDATE MyTable
SET MyField = NULL
WHERE MyField = ''
Bassam Mehanni
sumber
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.

Marc B
sumber
5

Gunakan NULL(tanpa tanda kutip di sekitarnya).

UPDATE users SET password = NULL where ID = 4
Roket Hazmat
sumber
5

Anda harus memasukkan null, bukan string 'NULL'.

xdazz
sumber
3

Dengan asumsi kolom memungkinkan pengaturan nol,

$mycolupdate = null; // no quotes

harus melakukan trik

Tuan Griever
sumber
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

web
sumber
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.

pengguna7509683
sumber