Archiv verlassen und diese Seite im Standarddesign anzeigen : where = array
der_meier_hans 23-04-2007, 12:34 Hallo!
In der Where Klausel soll nach bestimmten "ID" selektiert werden. Ich übergebe dem SQL String einen Array mit z.B drei Werten
Array ( [0] => Array ( [0] => Array ( [key_list] => 92 ) [1] => Array ( [key_list] => 93 ) [2] => Array ( [key_list] => 94 ) ) ) Array
Und meine Query sieht so aus
SELECT kl.list_id,
l.headline AS headline
FROM keywords_lists AS kl
LEFT JOIN lists AS l ON l.id = kl.list_id
WHERE kl.keyword_id = '$key_list'
Die $key_list ist mein ARRAY, wie kann ich es hinbekommen, dass er nach allen drei "ID" prüft ?
DANKE
ministry 23-04-2007, 12:43 Mach dein Array anders, z.B.
$key_list = array(92, 93, 94);
und im WHERE
$sql = "SELECT kl.list_id,
...
WHERE kl.keyword_id = " . implode(" OR kl.keyword_id = ", $key_list);
kuddeldaddeldu 23-04-2007, 13:09 Lieber gleich so:
$sql = "SELECT kl.list_id,
...
WHERE kl.keyword_id IN (" . implode(",", $key_list) . ")"; LG
der_meier_hans 23-04-2007, 15:08 Danke !
Wenn ich das mit IN ausführe, bekomme ich die Fehlermedung "no such field"
Ich habe mir den Query mit print_r ausgegeben, dort steht
"WHERE kl.keyword_id IN (Array,Array,Array)".
Sollten dort nicht meine ID's stehen ?
penizillin 23-04-2007, 15:10 schau dir kuddeldaddeldu's beispiel noch mal an und versuche es zu verstehen.
ministry 23-04-2007, 15:13 Du machst dein keylist- Array falsch, wie ich bereits sagte...
der_meier_hans 23-04-2007, 15:54 ich stehe gerade voll auf dem Schlauch. Um meine Array-list richtig hinzubekommen, sollte ich wie vorgehen ?
$key_list in eine foreach Schleife ???
Danke
Original geschrieben von der_meier_hans
Ich übergebe dem SQL String einen Array mit z.B drei Werten
Nein, das hast du nicht gemacht - dein gezeigtes Array enthält keine drei "Werte", sondern zunächst wieder mal ein Array.
Der Tipp von ministry bezog sich aber auf das, was du behauptest hast zu haben, aber nicht wirklich hast ...
der_meier_hans 23-04-2007, 16:35 O.K.
wenn ich mit print_r meine keylist ausgebe habe ich die id's die ich benötige:
Array ( [0] => Array ( [0] => Array ( [key_list] => 92 ) [1] => Array ( [key_list] => 93 ) [2] => Array ( [key_list] => 94 ) ) ) Array
Nun müssen diese aber an meinen Query so übergeben werden
$id = array(92,93,94)
um dieses format zu bekommen, muss ich meine keylist in eine foreach schleife durchlaufen lassen und jeden wert abspeichern ?
onemorenerd 23-04-2007, 16:50 Die Struktur dieses Arrays ist doch nicht gottgegeben. Und ganz sicher auch in keiner Weise vorteilhaft.
Setze dort an, wo du es zusammenstellst. Baue es gleich so auf, wie du es brauchst.
ministry 23-04-2007, 16:50 Naja, einfacher wäre es, dort wo du deine Keylist erstellst, eben nicht so ein verschachteltes Dingsda sondern ein ganz normales einfaches Array zu erstellen.
der_meier_hans 24-04-2007, 09:10 Ich bekomme es einfach nicht hin meinen Array in diese Form umzuwandeln $list_array (92,93,94)
$res =& $db->query("
SELECT kl.keyword_id AS key_list
from keywords_lists AS kl
WHERE kl.list_id = '$id';
");
$tmp = array($res->fetchAll());
$tmp [0][1] = 92;
$tmp [0][2] = 93;
$tmp [0][3] = 94;
Mit Count versuche ich die Anzahl der array's mir auszugeben um später mit einer Schleife es zu verarbeiten. Die Anzahl ist aber 1!
Danke
ministry 24-04-2007, 09:32 Dass das Array so komisch ist, scheint an deiner Datenbankklasse zu liegen (die wir nicht kennen).
Versuch mal das$key_list = array_values($tmp[0]);
der_meier_hans 24-04-2007, 09:54 print_r gibt mir diese Struktur aus:
Array ( [0] => Array ( [key_list] => 92 ) [1] => Array ( [key_list] => 93 ) [2] => Array ( [key_list] => 94 ) )
wie komme ich jetzt nur an die id's ran und wie soll ich sie abspeichern?
ministry 24-04-2007, 09:58 Original geschrieben von ministry
Dass das Array so komisch ist, scheint an deiner Datenbankklasse zu liegen (die wir nicht kennen).
Versuch mal das$key_list = array_values($tmp[0]);
:rolleyes:
|
-
- |