Setzen Sie den Wert in MySQL auf NULL

132

Ich möchte, dass ein Wert festgelegt wird, NULLwenn in dem von mir eingereichten Formular nichts in das Textfeld eingefügt wird. Wie kann ich das erreichen? Ich habe versucht einzufügen, 'NULL'aber dies fügt nur das Wort NULLin das Feld ein.

Ich bin mir nicht sicher, welchen Code ich dafür bereitstellen soll. Ich schreibe nur eine UPDATE-Abfrage.

muttley91
quelle
12
Sie müssen das Wort null ohne Anführungszeichen einfügen .
Mike Christensen

Antworten:

268

NULLFügen Sie in Ihre Update-Anweisung keine Anführungszeichen ein. Das sollte funktionieren:

UPDATE table SET field = NULL WHERE something = something
Fosco
quelle
Gleich hier : Static analysis: 1 errors were found during analysis. Unrecognized keyword. (near "NULL" at position 35) SQL query: UPDATE programs SET flash = NULL. - Update: Es war die folgende WHEREBedingung, die das Problem verursacht hat!
Kai Noack
16

Sie zitieren wahrscheinlich 'NULL'. NULL ist ein reserviertes Wort in MySQL und kann ohne Anführungszeichen eingefügt / aktualisiert werden:

INSERT INTO user (name, something_optional) VALUES ("Joe", NULL);
UPDATE user SET something_optional = NULL;
Andrew Ensley
quelle
10
UPDATE MyTable
SET MyField = NULL
WHERE MyField = ''
Bassam Mehanni
quelle
Ich denke, das Problem ist, dass er verwendet: 'NULL' anstelle von NULL.
Alfasin
Aber mit einiger Sorgfalt könnte dies vorhandene leere Felder reparieren, die null sein wollen: 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)";

Wenn Sie 'NULL'in Ihre Abfrage eingeben, fügen Sie nur eine 4-stellige Zeichenfolge ein. Ohne die Anführungszeichen NULList der tatsächliche Nullwert.

Marc B.
quelle
5

Verwenden Sie NULL(ohne die Anführungszeichen).

UPDATE users SET password = NULL where ID = 4
Rakete Hazmat
quelle
5

Sie sollten einfügen null, nicht die Zeichenfolge von 'NULL'.

xdazz
quelle
3

Angenommen, die Spalte erlaubt eine Nulleinstellung.

$mycolupdate = null; // no quotes

sollte den Trick machen

Herr Griever
quelle
1
... vorausgesetzt, Sie $mycolupdatebesetzen zu einem späteren Zeitpunkt nicht die Saite.
Álvaro González
2

Die hier gegebenen Antworten sind gut, aber ich hatte immer noch Probleme, NULL und nicht Null in der MySQL-Tabelle zu posten.

Schließlich bemerkte ich, dass das Problem in der von mir verwendeten Einfüge-Abfrage lag

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

So weit, ist es gut.

Meine Einfügeabfrage war schlecht.

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

Ich habe die Abfrage zum Lesen korrigiert.

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

Die $ -Menge liegt also außerhalb der Hauptzeichenfolge. Meine SQL-Tabelle hat jetzt akzeptiert, dass anstelle von 0 eine Nullmenge aufgezeichnet wird

Bahnen
quelle
Ich würde auch empfehlen, die veralteten mysql_-Funktionen aufzugeben und zu mysqli oder, meiner Präferenz, PDO zu wechseln.
muttley91
2

Das Problem, das Sie hatten, ist höchstwahrscheinlich, weil MySQL zwischen Null in Großbuchstaben und Null in Kleinbuchstaben unterscheidet.

Wenn Sie also eine Update-Anweisung mit null verwenden, funktioniert dies nicht. Wenn Sie es auf NULL setzen, würde es gut funktionieren.

Vielen Dank.

user7509683
quelle