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). Im Moment, wenn diese Werte nicht eingegeben werden, gebe ich eine leere Zeichenfolge als Wert weiter. 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);
php
mysql
null
sql-insert
user547794
quelle
quelle
$query
Zeichenfolge$intLat
und$intLng
werden nicht in Anführungszeichen gesetzt. Wenn die Variablen interpoliert werden, ist dies der Fall, NULL, NULL);
.Das funktioniert gut für mich:
INSERT INTO table VALUES ('', NULLIF('$date',''))
(erstes
''
Inkrement-ID-Feld)quelle
NULLIF(expr1, expr2)
. Siehe dev.mysql.com/doc/refman/5.7/en/…Wenn Sie keine Werte übergeben, erhalten Sie Nullen für die Standardeinstellungen.
Sie können das Wort NULL jedoch einfach ohne Anführungszeichen übergeben.
quelle
Alles, was Sie tun müssen, ist:
$variable =NULL;
// und übergeben Sie es in der Einfüge-Abfrage. Dadurch wird der Wert in mysql db als NULL gespeichertquelle
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, wie folgt:
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.
Ich hoffe, das hilft, ich musste dies nur für einige Hardware-Datenlogger verwenden, von denen einige Temperatur und Strahlung erfassen, andere nur Strahlung. Für diejenigen ohne Temperatursensor brauchte ich aus offensichtlichen Gründen NULL und nicht 0 (0 ist auch ein akzeptierter Temperaturwert).
quelle
Ihre Anfrage kann wie folgt lauten:
$query = "INSERT INTO data (notes, id, filesUploaded, lat, lng, intLat, intLng) VALUES ('$notes', '$id', TRIM('$imageUploaded'), '$lat', '$lng', '" . ($lat == '')?NULL:$lat . "', '" . ($long == '')?NULL:$long . "')"; mysql_query($query);
quelle
NULL
. Außerdem verwenden Sie dasNULL
Schlüsselwort PHPs (nicht in Anführungszeichen ), das als leere Zeichenfolge in einem Zeichenfolgenkontext ausgewertet wird. Daher weisen Sie erneut eine leere Zeichenfolge zu .Überprüfen Sie die Variablen, bevor Sie die Abfrage erstellen. Wenn sie leer sind, ändern Sie sie in die Zeichenfolge NULL
quelle
Sie können es zum Beispiel mit tun
UPDATE `table` SET `date`='', `newdate`=NULL WHERE id='$id'
quelle
$query = "INSERT INTO uradmonitor (db_value1, db_value2) VALUES (". (($val1=='')?"NULL":("'".$val1."'")) . ", ". (($val2=='')?"NULL":("'".$val2."'")) . ")";
$query = "INSERT INTO uradmonitor (db_value1, db_value2) VALUES (". (($val1=='')? :("'".$val1."'")) . ", ". (($val2=='')? :("'".$val2."'")) . ")";
quelle