URL: https://www.overclockers.at/coding-stuff/php_mysql_insert_values_aus_variable_217700/page_1 - zur Vollversion wechseln!
Hoi
Ich hab da folgendes Problem:
In einem PHP script inserte ich Werte aus einer Variablen in die Datenbank via
Code:mysql_query("insert into tablename value ('$var1')");
ist zwar schon lange her, aber afaik musst sie escapen:
http://php.net/manual/en/function.addslashes.php
edit: description beachten -> gibt vll bessere möglichkeiten als die funktion addslashes selbst
probier mal:
mysql_query("insert into tablename value (\"$var1\")");
Die richtige Antwort ist mysql_real_escape_string(). addslashes() hat Sicherheitsprobleme. 
In deinem Fall wäre das dann:
Code:mysql_query("insert into tablename value ('".mysql_real_escape_string($var1,$link)."')",$link);
merci 
worx
Hier ist mal wieder das angebracht. 
SQL injection wird wohl immer ein Thema bleiben... 
Gibts in PHP keine gebundenen Query-Parameter, so wie in echten Programmiersprachen?
Glaub schon (in php5), aber man muss es verwenden, genauso wie man in anderen Sprachen auch den gleichen Mist verzapfen kann wie in PHP 
Ich löse das gerne mit vsprintf(). Somit wird der SQL-Code erst kurz vor dem Ausführen des Queries erzeugt und vorab ordentlich geprüft. %s also Strings werden mit mysql_real_escape_string() gesichert, Zahlen werden automatisch gecasted usw. Damit hat sich ein Großteil der Sorgen durch SQL-Injections erledigt, den Rest muss das Gehirn machen. 
Ein Vorteil der Technik ist übrigens ein schöner SQL-Code, der nicht mit eingefügten PHP-Variablen und diversen String-Operationen unleserlich gemacht wird.
Nachdem das Thema eh schon abgeglitten ist...
Wie löst du
IN(...)
mit einer variablen Argumentliste?
Habe ich bisher nicht substituieren müssen. Aber wenn, dann würde ich unter Umständen einen eigenen Parameter dafür nutzen (zB %a) und an dessen Stelle das als String dargestellte Array (zB 'value1','value2', ...) einsetzen.
Zumindest in PHP haben prepared Statements (via PDO) einen Nachteil beim Debuggen: man sieht nicht, was wirklich zum Server geschickt wird und kanns nicht einfach in eine SQL Shell kopieren :/
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026