Suchmuster als Variable an MySQL übergeben

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
Friedrich Baur [ So, 05 Februar 2006 17:57 ] [ ID #1173754 ]

Re: Suchmuster als Variable an MySQL übergeben

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 |
------------------------------------------------------------ ----
Niels Braczek [ So, 05 Februar 2006 18:12 ] [ ID #1173755 ]

Re: Suchmuster als Variable an MySQL übergeben

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 |
------------------------------------------------------------ ----
Niels Braczek [ So, 05 Februar 2006 18:15 ] [ ID #1173756 ]

Re: Suchmuster als Variable an MySQL übergeben

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
Friedrich Baur [ So, 05 Februar 2006 18:23 ] [ ID #1173757 ]

Re: Suchmuster als Variable an MySQL übergeben

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.
Kai Ruhnau [ So, 05 Februar 2006 23:19 ] [ ID #1173759 ]

Re: Suchmuster als Variable an MySQL übergeben

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 |
------------------------------------------------------------ ----
Niels Braczek [ So, 05 Februar 2006 23:58 ] [ ID #1173760 ]

Re: Suchmuster als Variable an MySQL übergeben

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.
Kai Ruhnau [ Mo, 06 Februar 2006 23:01 ] [ ID #1175394 ]
PHP » de.comp.lang.php.datenbanken » Suchmuster als Variable an MySQL übergeben

Vorheriges Thema: Anzahl der Dpopdownfeld-Element begrenzen
Nächstes Thema: DB-Design und OOP