phpbar.de logo

Mailinglisten-Archive

[php] Re: Noch eine dumme Frage von mir...

[php] Re: Noch eine dumme Frage von mir...

Martin Ramsch m.ramsch_(at)_computer.org
Wed, 1 Sep 1999 21:35:29 +0200


Matthias Slovig schrieb am Mittwoch, den  1. September 1999:
> Versuch doch einfach, die Anführungszeichen mit \ zu escapen.
> also:
> 
> $anwid=mysql_query("select * from grunz where 
> (name="\"$suchname\"")");

Ich hatte in meiner anderen Antwort an Nadja noch vergessen, daß genau
die Handhabung solcher Backslashes im alten PHP/FI2 ziemlich krank
ist und ständig zu Überraschungen führt:

PHP/FI2:  $a = "Er hieß \"Dschango\", sagte er.\n";

Die Backslashes führen hier nur dazu, daß der Parser noch nicht das
Ende des Strings erkennt.  In der Variable $a sind die Backslashes
aber tatsächlich mit drin! (Er hieß \"Dschango\", sagte er.\n)

Der echo-Befehl filtert diese dann aber wieder heraus:
PHP/FI2:  echo $a;
--> Er hieß "Dschango", sagte er.<newline>

Funktionen wie mysql_query behandeln die noch enthaltenen Backslashes
aber nicht speziell, so daß mit den Zeilen
PHP/FI2:  $sql = "select * from grunz where (name=\"$suchname\")";
PHP/FI2:  $anwid = mysql_query($sql);
tatsächlich diese SQL-Anweisung an MySQL geschickt wird:
   select * from grunz where (name=\"$suchname\")
Und das gibt einen MySQL-Fehler.

Ciao,
  Martin
-- 
Martin Ramsch <m.ramsch_(at)_computer.org> <URL: http://ramsch.home.pages.de/ >
PGP: 0xE8EF4F75, 52 44 5E F3 B0 B1 38 26  E4 EC 80 58 7B 31 3A D7


php::bar PHP Wiki   -   Listenarchive