MySQL und PHP – fügen Sie NULL anstelle einer leeren Zeichenfolge ein
Lesezeit: 4 Minuten
Benutzer547794
Ich habe eine MySQL-Anweisung, die einige Variablen in die Datenbank einfügt. Ich habe kürzlich 2 Felder hinzugefügt, die optional sind ($intLat, $intLng). Wenn diese Werte nicht eingegeben werden, übergebe ich im Moment eine leere Zeichenfolge als Wert. Wie übergebe ich einen expliziten NULL-Wert an MySQL (falls leer)?
$query = "INSERT INTO data (notes, id, filesUploaded, lat, lng, intLat, intLng)
VALUES ('$notes', '$id', TRIM('$imageUploaded'), '$lat', '$long',
'$intLat', '$intLng')";
mysql_query($query);
Raketen-Hazmat
Um eine NULL an MySQL zu übergeben, tun Sie genau das.
INSERT INTO table (field,field2) VALUES (NULL,3)
Überprüfen Sie also in Ihrem Code if $intLat, $intLng sind empty, falls ja, verwenden NULL anstatt '$intLat' oder '$intLng'.
Dies fügt keinen mysql-NULL-Wert hinzu. Dadurch wird das Attribut auf die Zeichenfolge “NULL” gesetzt, die sich vom mysql-NULL-Wert unterscheidet. Ich sage nur, dass Sie zwei verschiedene Dinge geschrieben haben, das erste ist richtig, das zweite nicht so sehr, denke ich.
– G4bri3l
21. Februar 14 um 9:03 Uhr
@G4bri3l: Im $query Schnur, $intLat und $intLng werden nicht zitiert. Wenn also die Variablen interpoliert werden, wird es so sein , NULL, NULL);.
– Raketen-Hazmat
21. Februar 14 um 14:49 Uhr
Oh ja das sehe ich jetzt. Schön! Danke, dass du dir die Zeit genommen hast, mich darauf hinzuweisen 😉
– G4bri3l
22. Februar 14 um 13:38 Uhr
@G4bri3l: Kein Problem. Ich bin hier um zu helfen 🙂
– Raketen-Hazmat
24. Februar 14 um 15:04 Uhr
@alessadro: Diese Frage ist sehr alt. Wenn Sie Variablen in einer solchen SQL-Abfrage verketten, dann machen Sie etwas falsch! Bitte wechseln Sie zur Verwendung vorbereiteter Anweisungen in PDO oder MySQLi.
Ich denke, das ist besser, weil Sie es in nur einer Zeile tun können
– hiddeneyes02
2. Juni 18 um 12:16 Uhr
Nicht so einfach mit vorbereiteten Statements.
– MrMan
14. Juni 20 um 19:51 Uhr
Wenn Sie keine Werte übergeben, erhalten Sie Nullen für Standardwerte.
Aber Sie können das Wort NULL einfach ohne Anführungszeichen übergeben.
Er bekommt nur NULL als Voreinstellung, wenn die Tabelle so eingerichtet ist.
– Raketen-Hazmat
6. Januar 11 um 22:06 Uhr
Das bedeutet für mich “optional”.
– dkretz
6. Januar 11 um 22:28 Uhr
super, es funktioniert
– Loganathan Natarajan
28. September 21 um 10:14 Uhr
Shahid Sarwar
Alles was du tun musst, ist: $variable =NULL; // und in der Insert-Abfrage übergeben. Dadurch wird der Wert als NULL in mysql db gespeichert
Normalerweise fügen Sie mySQL reguläre Werte von PHP wie folgt hinzu:
function addValues($val1, $val2) {
db_open(); // just some code ot open the DB
$query = "INSERT INTO uradmonitor (db_value1, db_value2) VALUES ('$val1', '$val2')";
$result = mysql_query($query);
db_close(); // just some code to close the DB
}
Wenn Ihre Werte leer/null sind ($val1==”” oder $val1==NULL) und Sie möchten, dass NULL zu SQL hinzugefügt wird und nicht 0 oder eine leere Zeichenfolge, gehen Sie wie folgt vor:
function addValues($val1, $val2) {
db_open(); // just some code ot open the DB
$query = "INSERT INTO uradmonitor (db_value1, db_value2) VALUES (".
(($val1=='')?"NULL":("'".$val1."'")) . ", ".
(($val2=='')?"NULL":("'".$val2."'")) .
")";
$result = mysql_query($query);
db_close(); // just some code to close the DB
}
Beachten Sie, dass null als “NULL” und nicht als “‘NULL'” hinzugefügt werden muss. Die Nicht-Null-Werte müssen als “‘”.$val1.”‘” usw. hinzugefügt werden.
Hoffe, das hilft, ich musste das nur für einige Hardware-Datenlogger verwenden, von denen einige Temperatur und Strahlung sammeln, andere nur Strahlung. Für diejenigen ohne Temperatursensor brauchte ich aus offensichtlichen Gründen NULL und nicht 0 (0 ist auch ein akzeptierter Temperaturwert).
Für spaltendefinierte Ganzzahlen funktioniert die andere Lösung gut, aber für Textfelder musste ich die Abfrage wie oben in eine Zeichenfolgenverkettung aufteilen, wie es radhoo oben getan hat. $query = “INSERT INTO uradmonitor (db_value1, db_value2) VALUES (“. “NULL”. “, “.$val2.”)”;
Für spaltendefinierte Ganzzahlen funktioniert die andere Lösung gut, aber für Textfelder musste ich die Abfrage wie oben in eine Zeichenfolgenverkettung aufteilen, wie es radhoo oben getan hat. $query = “INSERT INTO uradmonitor (db_value1, db_value2) VALUES (“. “NULL”. “, “.$val2.”)”;
– Brian
10. Juli 18 um 22:41 Uhr
profitphp
Überprüfen Sie die Variablen, bevor Sie die Abfrage erstellen. Wenn sie leer sind, ändern Sie sie in die Zeichenfolge NULL
.
7278000cookie-checkMySQL und PHP – fügen Sie NULL anstelle einer leeren Zeichenfolge einyes