/ (MySQL) Abfrage nach mehreren Werten (Array)
Tom (der andere)
- php
Moin,
sorry, das wurde bestimmt schon gefragt (und beantwortet), aber ich fin's im Archiv einfach nicht.
Also ich habe einen Array z.B. $array = array("Hund", "Katze", "Maus");
Aus der DB möchte ich jetzt alle Einträge, in denen Spalte_X entweder Hund, Katze oder SELECT FROM Tabelle_X WHERE Spalte_X = 'Hund' OR Spalte_X = 'Katze' OR Spalte_X = 'Maus' Maus ist. Also z.B. so:
SELECT FROM Tabelle_X WHERE Spalte_X = 'Hund' OR Spalte_X = 'Katze' OR Spalte_X = 'Maus'
Der (das?) Array kann jetzt aber ganz unterschiedlich (lang) sein. Kann man das irgendwie eleganter abfragen, so in der Art:
SELECT FROM Tabelle_X WHERE Spalte_X = (ein oder mehrere Werte aus $array)
Danke, Tom
Huhu anderer Tom
Also ich habe einen Array z.B. $array = array("Hund", "Katze", "Maus");
$array ist ein etwas ungünstig gewählter Name für ein array, da array ja ein Schlüsselwort ist.
Funktioniert zwar trotzdem, macht den Code aber schlechter les- bzw. verstehbar.
Eine Abfrage wäre
z.B. so
SELECT col1,copl2 FROM Tabelle_X WHERE Spalte_X IN ('Hund','Katze','Maus')
die Aufzählungsliste kann man da sehr leicht per join zusammenkleben
Viele Grüße
lulu
Hallo,
so gehts:
$abfrage = "SELECT * FROM tabelle WHERE Spalte_X IN (";
foreach($array as $my_array)
{
$abfrage .= "$my_array, ";
}
$abfrage .= ")";
$ergebnis = mysql_query($abfrage);
Also am anfang habe ich nicht verstanden was du meinst. Aber so sollte es eigentlich gehn.
MFG
Andavos
Hello,
Hallo,
so gehts:$abfrage = "SELECT * FROM tabelle WHERE Spalte_X IN (";
foreach($array as $my_array)
{
$abfrage .= "$my_array, ";
}$abfrage .= ")";
$ergebnis = mysql_query($abfrage);
Da ist dann ein Komma zuviel am Ende und es fehlen die String-Häkchen.
Besser ist:
$inlist = "'".implode("','",$my_array)."'";
$sql = "select $fields from $table where $column in ($inlist)";
Liebe Grüße aus http://www.braunschweig.de
Tom