MySQL und PHP – fügen Sie NULL anstelle einer leeren Zeichenfolge ein

Lesezeit: 4 Minuten

MySQL und PHP fugen Sie NULL anstelle einer leeren
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);

MySQL und PHP fugen Sie NULL anstelle einer leeren
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'.

$intLat = !empty($intLat) ? "'$intLat'" : "NULL";
$intLng = !empty($intLng) ? "'$intLng'" : "NULL";

$query = "INSERT INTO data (notes, id, filesUploaded, lat, lng, intLat, intLng)
          VALUES ('$notes', '$id', TRIM('$imageUploaded'), '$lat', '$long', 
                  $intLat, $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.

    – Raketen-Hazmat

    30. März 15 um 3:26 Uhr

1643721248 824 MySQL und PHP fugen Sie NULL anstelle einer leeren
Jesenko Sokoljak

Das funktioniert bei mir ganz gut:

INSERT INTO table VALUES ('', NULLIF('$date',''))

(Erste '' erhöht ID-Feld)

  • NULLIF nimmt 2 Parameter NULLIF(expr1, expr2) . Sehen dev.mysql.com/doc/refman/5.7/en/…

    – Roy Hinkley

    19. Januar 17 um 15:57 Uhr


  • 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

Wie kodiere ich eine URL um Sonderzeichen in Java zu
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.”)”;

    – Brian

    10. Juli 18 um 22:41 Uhr

MySQL und PHP fugen Sie NULL anstelle einer leeren
Josia

Ihre Abfrage 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);

  • 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

1643721249 90 MySQL und PHP fugen Sie NULL anstelle einer leeren
profitphp

Überprüfen Sie die Variablen, bevor Sie die Abfrage erstellen. Wenn sie leer sind, ändern Sie sie in die Zeichenfolge NULL

.

727800cookie-checkMySQL und PHP – fügen Sie NULL anstelle einer leeren Zeichenfolge ein

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy