array() als Bedingung für DB Abfrage, klappt nicht ganz.

xtramen01

Erfahrenes Mitglied
Hallo Leute,

habe ein kleine Problem mit einer DB Abfrage.
Und zwar sieht die momentan so aus:

PHP:
$cat_auswahl = explode("_",$_GET['cid']);
$catIDs = implode(",",$cat_auswahl);

 $sql = $db->query("SELECT eintrag FROM menu WHERE mid IN (".$catIDs.")");

Da aber nicht nur nummerische Werte in $catIDs enthalten sein können, gibt es dann eine Fehlermeldung.

Ist es möglich das Array direkt als Bedingung zu setzen? Also in etwa so:

PHP:
$cat_auswahl = explode("_",$_GET['cid']);
$catIDs = implode(",",$cat_auswahl);

 $sql = $db->query("SELECT eintrag FROM menu WHERE mid = ".$cat_auswahl ."");

Bei mir kommt da nämlich folgender Fehler:
Description: Can not query: SELECT eintrag FROM menu WHERE mid IN (Array)
MySQL error nummer: 1054
MySQL error description: Unknown column 'Array' in 'where clause'

Ich komme leider nicht weiter. Bin über jede Hilfestellung dankbar.

Gruss
 
Dann solltest du die nicht numerischen Einträge vorher entfernen...

Sonst macht es doch auch keinen Sinn?
 
PHP:
$cat_auswahl = explode("_",$_GET['cid']);
$catIDs = implode(",",$cat_auswahl);

$sql = $db->query("SELECT eintrag FROM menu WHERE mid = ".$cat_auswahl ."");

das sieht mir sehr nach Joomla Framwork aus
da gibt es doch entsprechende Funktionen für von Joomla

versuchs mal so

PHP:
$sql = $db->query('SELECT eintrag FROM #__menu WHERE mid IN ('.implode(',',JRequest:getInt('cid')).')');
 
Zuletzt bearbeitet:
Ja stimmt schon. Ich muss das noch entsprechend umbauen, damit die nicht nummerischen Werte die aus der URI kommen, weg sind.

Also die Frage nach dem SInn mal aussen vor gelassen und mal prinzipiell gefragt.

ISt es denn möglich ein Array als WHERE Bedingung zu benutzen?

Wenn ja, gibt es ein Beispiel wie so etwas zu lösen ist?

Kann bei Google nix finden und ich scheitere ja leider wie oben zu sehen ist, weil das KOMPLETTE Array anscheinend nicht benutzt werden kann. ;-(

P.S. Nein mit Joomla hat das nix zu tun. :-)
 
Nein geht nicht!
Du musst die Werte mit implode() zusammenführen.
Du kannst die Zahlen aber in Anführungszeichen setzten dann störts nicht mehr.

PHP:
$sql = $db->query('SELECT eintrag FROM #__menu WHERE mid IN ("'.implode('","',$_GET['cid']).'")');
 
ok danke dir.
Wie meinst du das genau mit den Anführungszeichen?

Bzw. warum gibt es dann keine Fehlermeldungen?

Nochmal EDIT: GEht leider nicht, dann wird mir nur das erste Ergebnis der Abfrage ausgegeben.

Gruss
 
Zuletzt bearbeitet:
Zurück