2011-01-06 18 views
0

Ich habe eine MySQL-Anweisung, die einige Variablen in die Datenbank einfügt. Ich habe vor kurzem zwei Felder, die optional sind ($ intLat, $ intLng), aber ich möchte sie in der Insert-Anweisung enthalten, wenn eingegeben:MySQL und PHP - einfügen, auch wenn die Variable leer ist?

$query = "INSERT INTO data (notes, id, filesUploaded, lat, lng, intLat, intLng) 
      VALUES ('$notes', '$id', TRIM('$imageUploaded'), '$lat', '$long', 
        '$intLat', '$intLng')"; 
mysql_query($query); 
+0

Sind diese Felder ganze Zahlen? Wenn ja, müssen Sie sie nicht in Anführungszeichen setzen. Sie können sie in Ganzzahlen mit intval() oder (int) umwandeln, und wenn sie null sind, werden sie 0. – JAL

Antwort

2

nur einen Einsatz verwenden, und wenn die Variable leer ist, es wird in die Datenbank posten

+1

Das ist in Ordnung, solange diese Felder als DEFAULT NULL definiert sind. Im Fall der obigen Aussage, in der alles wie eine Zeichenfolge erscheint, funktioniert es auch so oder so. – JAL

0

Mit Michael Stevens nicht einverstanden; Wenn die Werte optional sind, sollten sie in der Datenbank NULL sein. Da Sie sie jedoch in Anführungszeichen setzen, werden sie als leere Zeichenfolgen eingefügt. Das wäre aus Sicht der Datensicherheit schlecht.

Also ... wie geht das? Verbringe ein paar Minuten damit, eine Funktion zu schreiben (oder zu finden), die ein assoziatives Array als Eingabe akzeptiert und die Abfrage generiert. Hauptbestandteile: array_keys, implode und mysql_real_escape_string. Das PHP-Handbuch ist übersät mit diesen :)