Abfrage in MySQL

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

  • Abfrage in MySQL

    Hallo,
    in einem Script, welche mehrfach durchlaufen wird, sammel
    ich über ein Formular die $id von verschiedenen Ergebnissen ein:

    Code:
    <input type=\"hidden\" name=\"id_list\" value=\"$id_list,$id\">
    Die $id_list sieht dann so aus: (,80,49,17,71,76,56,46,35,25,77)

    Beim letzten Durchlauf des Scripts wird damit eine Liste erzeugt:

    Code:
    $id_array = explode (",", $id_list);
          foreach($id_array as $inhalt)
         {
         $res = mysql_query("select * from tabelle where Index ='$inhalt '");
          while ($row = mysql_fetch_array($res))
         {
          if...............................
    Das funktioniert auch.
    Ich hätte das jedoch gerne ohne foreach, da mir das bei der
    weiteren Verarbeitung hinderlich ist, also in etwa so:

    Code:
    $res = mysql_query("select * from tabelle where Index =$id_list");
    Da gibt es leider immer ein MySQL-Error:
    where =,80,49,17.........

    Habe dann versucht die $id_list als array zu deklarieren:
    $id_list=array($id_list);
    dann kommt error: Unknown column 'Array' in 'where clause'
    Query: select * from quiz where lngIndex =Array

    und so gehts auch nicht: where Index =(' .addslashes($id_list). ')
    und so nicht: (" .$id_list. ")
    und so nicht: (' .$id_list. ')

    Gruss
    Heiner
    Zuletzt geändert von Heiner; 27.01.2003, 06:59.

  • #2
    Hi Heiner!

    Forme deine String-Liste so um, so daß sie ungefähr dem ähnelt: 1,34,32,67,23 (ohne Komma am Anfang)

    Dann kannst du nämlich in deinem Statement nach deiner WHERE Klausel
    PHP-Code:
    IN (".$id_list."
    benutzen.

    Im Ganzen dann so:
    PHP-Code:
    $res mysql_query("select * from tabelle where Index IN (".$id_list.")"); 
    Gruß oms
    {brigens Ein Kezboard/Treiber ist v;llig [berfl[ssig!

    Kommentar


    • #3
      Danke, komme erst heute abend dazu, melde mich dann nochmal.

      Kommentar


      • #4
        Hallo,
        habe es mal so versucht, bekomme Fehlermeldung:

        Code:
         MySQL: You have an error in your SQL syntax near ')' at line 1
        Query: select * from tabelle where Index IN ( 47, 86, 93, 42, 49, 44, 68, 32, 39, 33,)
        Habe einige Änderungen versucht:

        (".$id_list.") = Fehlermeldung, siehe oben
        ('.$id_list.') = passiert nichts
        (\".$id_list.\")=passiert nichts
        $id_list = Fehlermeldung, siehe oben
        '$id_list' = Fehlermeldung, siehe oben

        Kommentar


        • #5
          nach einem komma sollte immer ein wert stehen.
          PHP-Code:
          $id_link=trim($id_link);
          if (
          $id_link[strlen($id_link)-1]==",")
              
          $id_link=substr($id_link,0,strlen($id_link)-1); 
          Zuletzt geändert von mrhappiness; 27.01.2003, 19:22.
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            Habe das folgendermassen geregelt:
            Code:
            $zus=$id.",";
            if($count==10)$zus=$id;
            count zählt die Durchläufe, beim letzten dann ohne Komma dran.

            ist das auch akzeptabel?

            Gruss
            Heiner

            Kommentar


            • #7
              wenn's läuft (und so sieht's aus): ja selbstverfreilich
              musst halt deinen code anpassen, wenn du mal mehr oder weniger als 10 zahlen haben solltest.
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                Auch noch was herausbekommen:

                Wenn das Komma im 'selbstgemachten' String vorne bleibt,
                geht es auch so:
                Code:
                $id_list = substr( $id_list, 1 );
                Gruss
                Heiner

                Kommentar

                Lädt...
                X