where = array

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • where = array

    Hallo!

    In der Where Klausel soll nach bestimmten "ID" selektiert werden. Ich übergebe dem SQL String einen Array mit z.B drei Werten

    PHP-Code:
    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

    PHP-Code:
    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

  • #2
    Mach dein Array anders, z.B.
    PHP-Code:
    $key_list = array(929394); 
    und im WHERE
    PHP-Code:
    $sql "SELECT kl.list_id,
    ...
            WHERE kl.keyword_id = " 
    implode(" OR kl.keyword_id = "$key_list); 
    ich glaube

    Kommentar


    • #3
      Lieber gleich so:
      PHP-Code:
      $sql "SELECT kl.list_id,
      ...
              WHERE kl.keyword_id IN (" 
      implode(","$key_list) . ")"
      LG

      Kommentar


      • #4
        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 ?

        Kommentar


        • #5
          schau dir kuddeldaddeldu's beispiel noch mal an und versuche es zu verstehen.

          Kommentar


          • #6
            Du machst dein keylist- Array falsch, wie ich bereits sagte...
            ich glaube

            Kommentar


            • #7
              ich stehe gerade voll auf dem Schlauch. Um meine Array-list richtig hinzubekommen, sollte ich wie vorgehen ?

              $key_list in eine foreach Schleife ???

              Danke

              Kommentar


              • #8
                Re: where = array

                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 ...
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  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 ?

                  Kommentar


                  • #10
                    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.

                    Kommentar


                    • #11
                      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.
                      ich glaube

                      Kommentar


                      • #12
                        Ich bekomme es einfach nicht hin meinen Array in diese Form umzuwandeln $list_array (92,93,94)
                        PHP-Code:
                               $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

                        Kommentar


                        • #13
                          Dass das Array so komisch ist, scheint an deiner Datenbankklasse zu liegen (die wir nicht kennen).

                          Versuch mal das
                          PHP-Code:
                          $key_list array_values($tmp[0]); 
                          ich glaube

                          Kommentar


                          • #14
                            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?

                            Kommentar


                            • #15
                              Original geschrieben von ministry
                              Dass das Array so komisch ist, scheint an deiner Datenbankklasse zu liegen (die wir nicht kennen).

                              Versuch mal das
                              PHP-Code:
                              $key_list array_values($tmp[0]); 
                              ich glaube

                              Kommentar

                              Lädt...
                              X