Php variablen in insert statements?

... komplette Frage anzeigen

5 Antworten

$var1="ich gehöre in ein varchar oder text";
$var2=55; //gehört in ein int - Feld

$sql="insert into TABLE values ("'. $var1.'", '. $var2.', 12)";

Antwort bewerten Vielen Dank für Deine Bewertung

Wenn du einen Variablennamen in einfache Anführungszeichen setzt, wird er als String betrachtet und nicht durch seinen Wert ersetzt. Das hast du hier getan:

'$nachname'

"$nachname" wäre korrekt gewesen also " statt '.

Da du Anfänger bist eine Warnung: MySQL-Injections. Dabei wird versucht deine MySQL-Abfrage zu manipulieren indem man zum Beispiel in ein Formular als Nachname MySQL-Code eingibt. Der würde bei deinem Beispiel dann von MySQL als normaler gültiger Code interpretiert. Daher muss man sich dagegen schützen zum Beispiel durch Escaping oder Prepared Statements.

http://php.net/manual/de/mysqli.real-escape-string.php

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von maximilianus7
13.06.2016, 15:53

...faslsch! der gesamte sql-string ist in " , also werden auch die php-variablen interpretiert. aus sicht von php sind hier die ' normale zeichen.

1

wenn du ein semikolon ( ; ) noch dranhängst, funkt es dann?

Antwort bewerten Vielen Dank für Deine Bewertung

"INSERT INTO ..... VALUES ('Neuer Name', ' " . $variabele , " ', 'Straße xyz')"

Grüße

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von fluffiknuffi2
13.06.2016, 11:26

Das ist (vom Prinzip her) richtig (bis auf das ein Punkt fehlt hinter "variabele"), aber es ist zu beachten, dass hier die Gefahr einer MySQL-Injection besteht.

0
Kommentar von Dereta
13.06.2016, 17:13

ist mir bewusst :) Zauberwort mysql_real_escape_string :)

1

Nicht vergessen den Query auch abzuschicken.

Antwort bewerten Vielen Dank für Deine Bewertung