phpbar.de logo

Mailinglisten-Archive

Anführungszeichen und Hochkommata in SELECT-Query

Anführungszeichen und Hochkommata in SELECT-Query

Sebastian Mendel lists at sebastianmendel.de
Fre Mar 16 13:12:16 CET 2007


Benedikt Quirmbach schrieb:
> Hallo,
> 
> ich habe eine Tabelle mit Informationen zu Weinen.
> 
> Nun möchte ich in der Tabelle nach Informationen suchen. Diese  
> identifiziere ich anhand des Namens und des Jahrganges der Weine.
> 
> Dummerweise haben die Namen recht fantasievolle Namen, die  
> selbstverständlich auch fremdsprachig sind. So kann es vorkommen,  
> dass Namen sowohl Anführungszeichen als auch Hochkommata enthalten.  
> Und da komme ich etwas ins Schleudern...
> 
> Ich programmiere das ganze in PHP und stelle auch die Anfragen  
> dynamisch zusammen. Eine SELECT-Anfrage sieht im Moment so bei mir aus:
> 
> $query = 'SELECT * FROM weinliste WHERE NAME="' . mysql_escape_string 
> ($row_alleweine['NAME']) . '" AND JAHRGANG="' . $row_alleweine 
> ['JAHRGANG'] . '" ORDER BY PREIS';
> 
> Wenn ich diese Anfrage per PHP direkt an MySQL schicke, erhalte ich  
> eine Fehlermeldung bei bestimmten Weinen. Da geht's immer um die  
> Anführungszeichen oder Hochkommata.
> 
> Zum Test habe ich mir $query auch mal im Browser ausgeben lassen,  
> kopiert und mit phpmyadmin ausprobiert. Da funktioniert sie...
> 
> Kann mir jemand einen Tipp geben, wie ich das richtig kodiere?

' anstelle von " um strings
backticks um Namen ``
mysql_real_escape_string() anstelle von mysql_escape_string()
und IMMER mysql_real_escape_string() auf ALLE Variablen:


$query = "
  SELECT *
    FROM `weinliste`
   WHERE `NAME` = '" . mysql_real_escape_string($row_alleweine['NAME']) . "'
     AND `JAHRGANG` = '" . $row_alleweine['JAHRGANG'] . "'
ORDER BY `PREIS`";



-- 
Sebastian Mendel

www.sebastianmendel.de
_______________________________________________
Allgemeine Infos zur Liste: http://www.4t2.com/mysql/
Verwaltung: https://lists.4t2.com/cgi-bin/mailman/listinfo/mysql-de

php::bar PHP Wiki   -   Listenarchive