2017-07-16 9 views
0

Guten Tag!Aus Javascript Wörterbuch Einfügen in MySQL mit PHP Nullwert

Was ich versuche, ist ein Nullwert aus einem Wörterbuch (JSON-String, was auch immer) in MySQL-Datenbank einfügen. In der Konsole ist klar, dass der Wert meiner Daten null ist, aber beim Einfügen fehlschlägt. Ich habe versucht, die Null auf dem PHP zu kodieren und es war erfolgreich. Ich frage mich, warum es einen Fehler zurückgibt, wenn der Nullwert aus dem Wörterbuch stammt.

ex 1:

$query = "INSERT INTO table (field1) VALUES (" . $data['item'] . ")" <-- not working if item == null 

ex 2:

$query = "INSERT INTO table (field1) VALUES (null)" <-- tried testing this if the db accepts null and was successful 

Ich habe versucht, einige gleiche Frage zu finden, weil ich weiß, dass dies eine häufig gestellte Frage sein kann, aber ich konnte die Antwort finden und ziemlich mit harte Zeit selbst herausfinden, warum dies passiert.

Vielen Dank!

+0

Haben Sie 'var_dump ($ data ['item'])' '? – Sean

Antwort

1

Weitere Details werden helfen, eine Menge, aber beste Vermutung ist, weil PHP auf einen leeren String null konvertiert, so dass Sie bauen diese Abfrage:

$query = "INSERT INTO table (field1) VALUES()"; 

die zu Recht Sie einen SQL-Fehler geben würde. Versuchen Sie folgendes:

$query = "INSERT INTO table (field1) VALUES (" . (is_null($data['item']) ? 'null' : $data['item']) . ")"; 

Auch Sie SQL injection wahrscheinlich anfällig sind. Sie sollten immer vorbereitete Abfragen verwenden.

+0

Wow, vielen Dank. Jetzt habe ich versucht, ein Protokoll zu erstellen und es zeigt, dass PHP es in '' (leere Zeichenfolge) umgewandelt hat. Hmm bin ich immer noch verwundbar, selbst wenn ich den ganzen JSON filtere, dass, wenn es einen Apostroph hat, es mit zwei multipliziert wird, so dass mysql die Eingabe des Benutzers registrieren kann? – Siege21x

+0

oder haben Sie irgendwelche Empfehlungen, das zu verhindern? Ich plane, gespeicherte Funktionen für alles zu machen und mysqli zu verwenden. Ist das gut genug? – Siege21x

+0

Ihre beste Wette ist es, einige Ihrer Fragen über Informationssicherheit zu stellen: https://security.stackexchange.com/ Wie immer, stellen Sie sicher und geben Sie viele Details darüber, damit Ihre Frage gründlich beantwortet werden kann. SQL Injection ist ein kompliziertes Thema, eine häufige Sicherheitslücke, auf die Hacker aktiv zugreifen. Definitiv wert, darüber zu lernen. Ich würde sagen, um es einfach zu halten: starke Eingabefilterung, vorbereitete Abfragen, weiße Liste dynamischer Abfragen. Gespeicherte Funktionen können auch anfällig für SQL-Injection sein, also überprüfen Sie sie auch sorgfältig. –

0

Jetzt bekomme ich es. Der Wert NULL ist = zu '' weil es wirklich nichts enthält (''). Aber wenn ich Apostroph vor und nach dem Wort NULL einfüge, druckt es bei meiner Abfrage das Wort NULL. Nur ein paar kleine Fehler.