dedlfix: htmlentities und mysql_real_escape_string

Beitrag lesen

echo $begrüßung;

sprintf("INSERT INTO tabelle SET wert1 = '%s', wert2 = '%s'",
    mysql_real_escape_string($_POST['var1']),
    mysql_real_escape_string($_POST['var2']));
(eigentlich müsste das doch ein Update sein, weil da Set steht ?)

Nein, INSERT gibt es in zwei Formen[*]. Die mit SET ist eine davon.

Jedenfalls habe ich es nicht zum laufen bekommen

Mit einer genauen Fehlerbeschreibung könnte man vielleicht sagen, woran es liegt.

$sql = sprintf("INSERT INTO tabelle
          (id, var1)
          VALUES ('', '%s', '%s')",
         mysql_real_escape_string($_POST['var1'])
         mysql_real_escape_string($_POST['var2'])
);

Abgesehen vom Nichtaufführen von var2 in der Werteliste ... Es ist nicht unbedingt erforderlich jedes Feld der Tabelle im INSERT zu berücksichtigen. Die Felder haben Default-Werte, die bei Nichtvorhandensein im INSERT-Statement in den neuen Datensatz eingefügt werden. Insbesondere wird ID so ein Feld sein, dass automatisch ausgefüllt werden soll. Lass es einfach in der Feld- und Werteliste unaufgeführt.

  1. Ein Fragebogen mit 25 Fragekomplexen, jeder Komplex hat ca 10 Fragen mit wobei alles input type="radio" ist und es kann 1 bis 5 bewertet werden.
    Kann man das in einer Datei erledigen oder sollte man die Daten Teilen und auf mehrere Seiten verteilen?

Dem Computer ist das egal, den Probanden sicher nicht. Das musst du mit Rücksicht auf diese selbst entscheiden.

Dann müsste ich entweder die Ergebnisse von Seite zu Seite übergeben oder eine ID am Anfang vergeben, die mit übernehmen und ab der zweiten Seite ein Update durchführen?

Sessions lautet eine Antwort auf so eine Frage. Leg die Werte der einzelnen Frageseiten im Server in einer Session ab und bilde daraus beim Auswerten der letzten Frageseite dein INSERT-Statement.

  1. mysql_real_escape_string()muss man in einer for schleife auf etwas achten? Weil ich bekam diesen Fehler:
    Warning: mysql_real_escape_string() expects parameter 1 to be string, array given in

Diese Funktion kann nur mit skalaren Werten (Strings, Integer) umgehen. Ob du eine Schleife hast oder nicht - du darfst sie nicht mit komplexen Werten (Array, Objekt) füttern. Kontrolausgaben mit mit var_dump() sind ein gutes Hilfsmittel, sich über Typ und Inhalt einer Variable oder eines Ausdrucksergebisses zu informieren. (Ein <pre> vor der Ausgabe von komplexen Strukturen erhöht die Übersichtlichkeit.)

[*] INSERT ... SELECT ist eine dritte Form, die aber für andere Anwendungsfälle gebraucht wird.

echo "$verabschiedung $name";