Array in where klausel

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

  • Array in where klausel

    Hallo,
    ich habe folgendes Problem ich will in einer WHERE Klausel ein Array verwenden(mysql_fetch_array), aber leider geht implode nicht und gib aus:
    Warning: implode() [function.implode]: Bad arguments. in

    Desweiteren habe ich schon überprüft ob in Array auch wirklich was drin steht.

    Hier der Code dazu:
    PHP-Code:
    while ($row=mysql_fetch_array($result))
    {
         
    $where      implode(",",$row['rechte_id']);
        
    //$result    = mysql_query("SELECT rechte_name FROM  user_rechte WHERE recht_id='".$where."'");
        

    Hoffe ihr könnt mir helfen....

    THX im vorraus

  • #2
    Was du da machst, sieht aus als wäre es keine gute Idee.

    Zeig mal die $result-Query und beschreib was du machen möchtest.
    ich glaube

    Kommentar


    • #3
      Also das ganze dient zur Rechteverwaltung mit 0 und 1.
      Als erstes schaue welche user_id der aktuelle User hat. Danach schaue ich nach welche Rechte der User hat und das array was dabei entsteht mit den rechte_id´s wird dann abgeglichen mit der Tabelle rechte wo nur "rechte_id" und "rechte_namen" drin stehen.
      Und wo die "rechte_id" übereinstimmt sollt später der "rechte_name" ausgeben werden und als Link verwendet werden.
      Das ist der Grundgedanken und hiezu noch der Code:

      PHP-Code:
      session_start();
      require_once(
      "connect.php");
      require_once(
      "check_intern.php");
      //-------Benutzerrechte------
      $result     mysql_query("SELECT * FROM user WHERE session_id='".session_id()."' AND ip='".$_SERVER['REMOTE_ADDR']."'");
      $row        mysql_fetch_row($result);
      $result     mysql_query("SELECT * FROM user_rechte WHERE user_id='".$row[0]."' AND rechte_wert=1");

      while (
      $row=mysql_fetch_array($result))
      {
           
                
      $where implode(", ",$row['rechte_id']);
               
      //$result = mysql_query("SELECT recht_name FROM rechte WHERE recht_id='".$where."'");

      Kommentar


      • #4
        Könntest du bitte auf die Fragen eingehen?

        Achso, lies und befolge unsere Regeln und benutz mysql_error()

        Kommentar


        • #5
          Hab doch beschrieben was ich machen will und und die Query hab ich dir auch gepostet. Und mysql_error zeigt keine Fehlermeldung an außer beim letzten denn ich auskommentiert habe, aber dies ist ja auf das implode zurückzuführen, da dies ja nicht richtig funktioniert.
          Oder was meinst du?

          Kommentar


          • #6
            du hast NUR PHP-Code gepostet. Nirgends steht, wie die Query aussieht, wenn sie von PHP an die DB gesendet wird.

            Und mysql_error zeigt keine Fehlermeldung an
            Ich sehe in deinem Code auch kein mysql_error.

            Kommentar


            • #7
              Re: Array in where klausel

              PHP-Code:
              $where      implode(",",$row['rechte_id']); 
              $row['rechte_id'] ist kein Array!! -> kein Implode!!

              Kommentar


              • #8
                Das ist kein guter Weg mit den drei Queries und den Schleifen.

                Mach es mit Joins.

                PHP-Code:
                SELECT recht_name 
                FROM rechte 
                LEFT JOIN user_rechte USING
                (rechte_id)
                LEFT JOIN user USING(user_id)
                WHERE user.user_id $userID
                AND rechte_wert 
                Oder so ähnlich.
                ich glaube

                Kommentar


                • #9
                  Das mysql_error, steht bei mir in der letzten Zeile und hab diese Zeile nur vergessen zu markieren beim kopieren,sry
                  Und ehh dachte mysql_fetch_aray haut dann alles in ein array rein?!"mysql_fetch_array -- Liefert einen Datensatz als assoziatives Array, als numerisches Array oder beides"
                  Undas Query sieht folgendermaßen aus(12). Also die beiden ID´s die erlaubt sind für denn User

                  Kommentar


                  • #10
                    Hatte mich ohnehin von der ersten Antwort leiten lassen. Die Query wird ja korrekt ausgeführt. Du interpretiert das Manual nur leider falsch.

                    liefert EINEN DATENSATZ als Array.

                    Das bedeutet, dass alle Spalten eines Datensatzes ins Array $row gepackt werden. Wenn du print_r($row) machst, siehst du das auch.

                    Auch wenns jetzt klar ist, solltest du dir die anderen Tipps noch zu Herzen nehmen.
                    Undas Query sieht folgendermaßen aus(12). Also die beiden ID´s die erlaubt sind für denn User
                    OffTopic:
                    ???

                    Kommentar

                    Lädt...
                    X