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.


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

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;

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

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.


5

Verwenden Sie NULL(ohne die Anführungszeichen).

UPDATE users SET password = NULL where ID = 4

5

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


3

Angenommen, die Spalte erlaubt eine Nulleinstellung.

$mycolupdate = null; // no quotes

sollte den Trick machen


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


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.