Auge: Query funktioniert nicht

Beitrag lesen

Hallo

$query = "INSERT INTO land (name) VALUES '".$bundesland."';"

Funktioniert immer noch nicht!

Das habe ich auch nicht behauptet. 😉

Henry hat aber schon den richtigen Weg gewiesen. Was steht denn in der MySQL-Fehlermeldung?

Somit wäre zumindest die Syntax repariert. Dass damit kein Schutz vor SQL-Injection verbunden ist, ist die nächste Baustelle, die unbedingt anzugehen ist.

Was ist "SQL-Injection"? Meinst du das Einschmuggeln von HTML oder JavaScript über Formulare?

… oder SQL-Code, also Dinge, die in einer SQL-Abfrage Schaden anrichten. Dafür gibt es für Zeichenketten die Funktion mysqli_real_escape_string oder man präpariert seinen Query, wobei die Funktion je nach Datentyp „das Richtige“ macht.

Dagegen habe ich das hier gemacht:

… was gegen SQL-Injection nicht hilft.

  $bundesland = lencheck($_POST["bundesland"], $lengths[0]);
  $bundesland = trim(htmlspecialchars($bundesland, ENT_QUOTES));

lencheck ist eine selbst geschriebene Funktion, die die Eingabe nach Bedarf auf die maximal zulässige Länge kürzt.

Was ist laut deiner Definition zulässig? „Bayern“ oder „Berlin“ haben schließlich eine gänzlich andere Länge als „Baden-Württemberg“ oder gar „Nordrhein-Westfalen“.

Tschö, Auge

--
Ein echtes Alchimistenlabor musste voll mit Glasgefäßen sein, die so aussahen, als wären sie beim öffentlichen Schluckaufwettbewerb der Glasbläsergilde entstanden.
Hohle Köpfe von Terry Pratchett