Suchmuster als Variable an MySQL übergeben
Suchmuster als Variable an MySQL übergeben
am 05.02.2006 17:57:00 von Friedrich Baur
Hallo,
habe alles, was gibt, durchsucht, ohne Ergebnis.
Wie kann ich bei
$sql = 'SELECT `NAME` FROM `links` WHERE 1 AND `NAME` LIKE \'A%\'';
(das funktioniert)
das Suchmuster 'A%' (oder ein anderes) übergeben, also
$suchmuster = 'A%';
$sql = 'SELECT `NAME` FROM `links` WHERE 1 AND `NAME` LIKE
'$suchmuster%';
So stehts in einem früheren Beitrag.
Is aber nich.
Ich habe schon alle möglichen Variationen probiert, die Richtige war
nicht dabei.
Oder geht das gar nicht?
Bei de.comp.datenbanken.mysql haben sie mich übrigens schon fortgejagt.
;-)
Freundliche Grüße
Friedrich
Re: Suchmuster als Variable an MySQL übergeben
am 05.02.2006 18:12:44 von Niels Braczek
Friedrich Baur schrieb:
> habe alles, was gibt, durchsucht, ohne Ergebnis.
Das PHP-Manual hast du dabei wohl übersehen.
> Wie kann ich bei
>
> $sql = 'SELECT `NAME` FROM `links` WHERE 1 AND `NAME` LIKE \'A%\'';
> (das funktioniert)
>
> das Suchmuster 'A%' (oder ein anderes) übergeben, also
>
> $suchmuster = 'A%';
> $sql = 'SELECT `NAME` FROM `links` WHERE 1 AND `NAME` LIKE
> '$suchmuster%';
> So stehts in einem früheren Beitrag.
> Is aber nich.
$sql = "SELECT name
FROM links
WHERE name LIKE '$suchmuster%'";
Um den wesentlichen Unterschied zu deiner Variante zu verstehen, lies
http://www.php.net/manual/en/language.types.string.php#langu age.types.string.parsing
Anmerkungen: Backticks braucht man nur, wenn man etwas falsch gemacht
hat, zB reservierte Wörter als Spaltennamen verwendet.
Spaltennamen sollten immer klein geschrieben werden, weil es
Installationen gibt, die klein geschriebene Spaltennamen verlangen.
> Ich habe schon alle möglichen Variationen probiert, die Richtige war
> nicht dabei.
> Oder geht das gar nicht?
'Geht nicht' gibt's nicht. Es gibt nur 'Lohnt nicht'.
> Bei de.comp.datenbanken.mysql haben sie mich übrigens schon fortgejagt.
> ;-)
Verständlich.
MfG
Niels
--
| http://www.kolleg.de · Das Portal der Kollegs in Deutschland |
| http://www.bsds.de · BSDS Braczek Software- und DatenSysteme |
| Webdesign · Webhosting · E-Commerce · Mambo Content Management |
------------------------------------------------------------ ----
Re: Suchmuster als Variable an MySQL übergeben
am 05.02.2006 18:15:31 von Niels Braczek
Niels (die Ingrid) Braczek schrieb:
> Friedrich Baur schrieb:
Fast übersehen: Das Prozentzeichen gehört
>> $suchmuster = 'A%';
^
*entweder* hier hin ...
> $sql = "SELECT name
> FROM links
> WHERE name LIKE '$suchmuster%'";
^
.... *oder* hier hin.
Wenn's an beiden Stellen steht, kann das natürlich auch nicht funktionieren.
MfG
Niels
--
| http://www.kolleg.de · Das Portal der Kollegs in Deutschland |
| http://www.bsds.de · BSDS Braczek Software- und DatenSysteme |
| Webdesign · Webhosting · E-Commerce · Mambo Content Management |
------------------------------------------------------------ ----
Re: Suchmuster als Variable an MySQL übergeben
am 05.02.2006 18:23:15 von Friedrich Baur
Danke, Du bist der Größte.
> $sql = "SELECT name
> FROM links
> WHERE name LIKE '$suchmuster%'";
>
> Um den wesentlichen Unterschied zu deiner Variante zu verstehen, lies
> http://www.php.net/manual/en/language.types.string.php#langu age.types.string.parsing
>
> Anmerkungen: Backticks braucht man nur, wenn man etwas falsch gemacht
> hat, zB reservierte Wörter als Spaltennamen verwendet.
> Spaltennamen sollten immer klein geschrieben werden, weil es
> Installationen gibt, die klein geschriebene Spaltennamen verlangen.
Da ich nicht der Crack bin, wie wohl schon bemerkt, habe ich mir den
SQL-String von phpMyAdmin stricken lassen.
Werde mich gleich nochmal mit dem vorgeschlagenen Link befassen.
Schönen Abend noch.
Friedrich
Re: Suchmuster als Variable an MySQL übergeben
am 05.02.2006 23:19:58 von Kai Ruhnau
Niels (die Ingrid) Braczek wrote:
> Niels (die Ingrid) Braczek schrieb:
>> Friedrich Baur schrieb:
>
> Fast übersehen: Das Prozentzeichen gehört
>
>>> $suchmuster = 'A%';
> ^
> *entweder* hier hin ...
>
>> $sql = "SELECT name
>> FROM links
>> WHERE name LIKE '$suchmuster%'";
> ^
> ... *oder* hier hin.
> Wenn's an beiden Stellen steht, kann das natürlich auch nicht funktionieren.
Doch, das funktioniert auch, wenn das finale Suchmuster A%% lautet und
funktioniert genauso wie A%.
Grüße
Kai
--
This signature is left as an exercise for the reader.
Re: Suchmuster als Variable an MySQL übergeben
am 05.02.2006 23:58:43 von Niels Braczek
Kai Ruhnau schrieb:
> Niels Braczek wrote:
>> Wenn's an beiden Stellen steht, kann das natürlich auch nicht funktionieren.
>
> Doch, das funktioniert auch, wenn das finale Suchmuster A%% lautet und
> funktioniert genauso wie A%.
Stimmt -- zwei %-Zeichen hintereinander haben eine Sonderrolle in
Verbindung mit (s)printf - das hatte ich hier wohl etwas durcheinander
gebracht.
Der Unterschied macht sich bemerkbar, wenn sich das Suchmuster ändert:
Aus '%A' würde dann '%A%', was ganz andere (zusätzliche) Treffer zur
Folge hat/haben kann.
MfG
Niels
--
| http://www.kolleg.de · Das Portal der Kollegs in Deutschland |
| http://www.bsds.de · BSDS Braczek Software- und DatenSysteme |
| Webdesign · Webhosting · E-Commerce · Mambo Content Management |
------------------------------------------------------------ ----
Re: Suchmuster als Variable an MySQL übergeben
am 06.02.2006 23:01:32 von Kai Ruhnau
Niels Braczek wrote:
> Kai Ruhnau schrieb:
>> Niels Braczek wrote:
>
>>> Wenn's an beiden Stellen steht, kann das natürlich auch nicht funktionieren.
>> Doch, das funktioniert auch, wenn das finale Suchmuster A%% lautet und
>> funktioniert genauso wie A%.
>
> Stimmt -- zwei %-Zeichen hintereinander haben eine Sonderrolle in
> Verbindung mit (s)printf - das hatte ich hier wohl etwas durcheinander
> gebracht.
>
> Der Unterschied macht sich bemerkbar, wenn sich das Suchmuster ändert:
> Aus '%A' würde dann '%A%', was ganz andere (zusätzliche) Treffer zur
> Folge hat/haben kann.
Ja, '%A' will man aber ohnehin aus Indizierungsgründen gar nicht benutzen.
In meiner Applikation habe ich den Wildcard am Ende standardmäßig
eingebaut. Kostet MySQL keine wirklichen Mühen und hat bis jetzt zu
keinen Irritationen geführt.
Grüße
Kai
--
This signature is left as an exercise for the reader.