Tom (der andere): / (MySQL) Abfrage nach mehreren Werten (Array)

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

  1. 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

    --
    bythewaythewebsuxgoofflineandenjoytheday
  2. 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

    --
    http://www.rpgcommunity.de/clanwissen/index.php Webdesign, PHP, Clan-Aufbau und mehr
    1. 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

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen