Mailinglisten-Archive |
Hallo, Peter Prochaska wrote: > Bei MySQL kann man bei mysql_query kein ; in einem Query angeben. Da > wird ein Fehler geworfen. > Da hat man das Problem mit ;DROP table 'x' nicht :-) Meines Wissens nach ist es kein Problem, auch bei mysql_query ein Semikolon zum abschließen des Queries zu verwenden, was ich einst auch stets so gehandhabt habe. Ein Fehler wird nur dann erzeugt, wenn nach dem Semikolon noch etwas folgt. Für mysqli_query gilt das gleiche. Hier gibt es jedoch *mysqli_multi_query* was einen solchen Angriff erlauben würde. (http://de.php.net/manual/en/function.mysqli-multi-query.php) Da man ohnehin Semikolons nicht zum Abschließen von Queries verwenden sollte habe ich das vor längerer Zeit auch abgestellt. Aber zurück zum eigentlichen Thema. Mit mysql_real_escape_string solltest du gegen Injections gut gerüstet sein. Daher halte ich von Prepared-Statements nicht viel, da man hier bei einem Query der nur ein einziges mal Abgesetzt wird einen Performanceverlust hat (wenn auch nur geringfügig). Bei Queries, welche mehrmals abgesetzt werden und sich lediglich die Inhalte von Variablen zur Abfrage ändern z.b. ... 'SELECT * FROM `tbl` WHERE `col` = '.$var ... sind Prepared Statements aus Performancegründen im jedenfall zu empfehlen. grüße Martin
php::bar PHP Wiki - Listenarchive