phpbar.de logo

Mailinglisten-Archive

[php] MySql-Abfrage

[php] MySql-Abfrage

Guido Haeger GH-lists_(at)_ecora.de
Mon, 19 Jun 2000 08:54:11 +0200


Andreas Korinek schrieb

> "select * from artikel where kat_id like $kat_id"

SELECT * FROM artikel WHERE kat_id LIKE '%$kat_id%'

Dein SQL-Statement heißt übersetzt: "Gebe mir alle Felder von
Datensätzen aus, bei denen kat_id exakt dem Inhalt der Variable $kat_id
entspricht." Du willst aber eigentlich sagen: "Gebe mir alle Felder von
Datensätzen aus, bei denen das Feld kat_id an beliebiger Stelle den
Inhalt der Variablen $kat_id enhält.". Deshalb mußt Du die % als
Platzhalter einsetzen. Problematisch bei Deiner Datenbank wird es dann,
wenn $kat_id dann z.B. 2 ist. Es werden dann alle Felder ausgegeben, bei
denen irgendwo eine 2 vorkommt, also z.B. auch bei 231 oder 12. Abhilfe
schafft ein komplizierteres SQL-Statement, oder eventuell ein Überdenken
Deiner Datenbankstruktur.

z.B.:

SELECT * FROM artikel WHERE
kat_id LIKE '$kat_id' OR
kat_id LIKE '$kat_id,%' OR
kat_id LIKE '%,$kat_id' OR
kat_id LIKE '%,$kat_id,%'

Guido Haeger



php::bar PHP Wiki   -   Listenarchive