Mailinglisten-Archive |
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