Ankündigung

Einklappen
Keine Ankündigung bisher.

Select from ** where ** = array ?

Einklappen

Neue Werbung 2019

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

  • Select from ** where ** = array ?

    Hallo,

    ich habe ein Frage und hoffe, mir kann hier jemand helfen (ich sag loieber gleich dazu - ich bin absolute Anfängerin).

    Ich habe mittels Session einen Tabellennamen sowie einen array mit mehreren ID's erstellt.
    Jetzt möchte ich durch eine foreach-Schleife die Inhalte aus der Datenbank von den jeweiligen ID's ziehen (ich hoffe, ich drücke mich einigermaßen verständlich aus). Ist das möglich? Hier mein Code:

    PHP-Code:

    $array 
    $_SESSION['produkt_id']; 
    $clean_array array_unique($array);

    foreach(
    $_SESSION['cart'] as $item_id => $item_count){
                        
    $query "SELECT * from `".$_SESSION['artikel-site']."` WHERE ARTIKEL_ID = `".$clean_array."`";
                          
    $result mysql_query($query); 


  • #2
    Die IDs gehören zB mit implode() und OR in die WHERE Klausel. Oder mit "IN" (SQL).

    http://php.net/manual/de/function.implode.php

    http://www.tutorialspoint.com/mysql/mysql-in-clause.htm

    LG
    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Das mit implode habe ich schon versucht. Wenn ich das dann einfach so einfüge, klappt es nicht:

      PHP-Code:
      $string_array implode(""$clean_array);

      $query "SELECT * from `".$_SESSION['artikel-site']."` WHERE ARTIKEL_ID = `".$string_array."`";
      $result mysql_query($query); 
      Wie ich das mit OR oder IN verwenden soll, versteh ich jetzt nicht. Ich habe ja keine festen Werte - die sind ja im array.

      Kommentar


      • #4
        `backticks` sind übrigens keine 'Hochkomas' korrigiere das mal

        versteh ich jetzt nicht. Ich habe ja keine festen Werte - die sind ja im array.
        Schau in dem Beispiel auf der verlinkten Seite:, das baust du so mit implode() und deinem Array nach.

        Code:
        SELECT * FROM employee_tbl 
        WHERE daily_typing_pages IN ( 250, 220, 170 );
        PHP-Code:
        $dein_array = array(1,12,35,47);
        $query "SELECT * from `"...."` WHERE ARTIKEL_ID IN (".implode(","$dein_array).")";
        echo 
        $query;
        // SELECT * from `` WHERE ARTIKEL_ID IN (1,12,35,47) 
        SELECT * -> http://php-de.github.io/jumpto/code-smells/#select-

        Und mysql_* ist veraltet und wird bald nicht mehr funktionieren, da es auf PHP rausfliegt.
        http://php.net/manual/en/mysqlinfo.api.choosing.php

        LG
        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          PHP-Code:

          $array 
          $_SESSION['produkt_id']; 
          $clean_array array_unique($array);
          $articleString implode("','",$clean_array);
                              
          $query "SELECT * from `".$_SESSION['artikel-site']."` WHERE ARTIKEL_ID IN('".$articleString."')";
          echo 
          $query//schau wie der output aussieht            
          $result mysql_query($query); 
          apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

          Kommentar


          • #6
            `backticks` sind übrigens keine 'Hochkomas' korrigiere das mal
            Danke für den Hinweis!

            So? Das haut leider nicht hin. (Auch nicht wenn ich es wie im Beispiel oben als extra Variable zwischenspeichere)

            PHP-Code:
            $query "SELECT * from '".$_SESSION['artikel-site']."' WHERE ARTIKEL_ID IN '".implode(""$clean_array)."'"

            Kommentar


            • #7
              schau doch genau auf die syntax, bei einem IN ist eine klammer und jedes element innerhalb der klammern wird durch ein komma getrennt..
              apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

              Kommentar


              • #8
                Siehe oben, wir waren schneller... Schau dir das genau an und vergleiche.
                Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                PHP.de Wissenssammlung | Kein Support per PN

                Kommentar


                • #9
                  Hatte eure Antworten noch nicht gesehen!
                  Danke - die Datenbankverbindung klappt jetzt, aber mir wird nur eine Ausgabe wiedergegeben.
                  Wenn ich mir den array ausgeben lasse, erscheinen aber 3 Inhalte.

                  Kommentar


                  • #10
                    aber mir wird nur eine Ausgabe wiedergegeben.
                    Wenn ich mir den array ausgeben lasse, erscheinen aber 3 Inhalte.
                    Aha
                    Dann schau warum, lass dir die query ausgeben, vergleiche die Werte etc.. -> http://php-de.github.io/jumpto/sql/

                    LG
                    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                    PHP.de Wissenssammlung | Kein Support per PN

                    Kommentar


                    • #11
                      Und mysql_* ist veraltet und wird bald nicht mehr funktionieren, da es auf PHP rausfliegt.
                      Na super, jetzt habe ich es gerade gelernt und dann! Danke für die Info. Dann muss ich das wohl wieder umbauen.

                      Kommentar


                      • #12
                        Zitat von Die_Brini Beitrag anzeigen
                        Na super, jetzt habe ich es gerade gelernt und dann! Danke für die Info. Dann muss ich das wohl wieder umbauen.
                        Naja, die Umstellung auf mysqli_ ist nicht viel, sehr ähnlich. Schau hier:
                        http://www.peterkropff.de/site/php/m...grundlagen.htm

                        LG
                        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                        PHP.de Wissenssammlung | Kein Support per PN

                        Kommentar


                        • #13
                          So hab ichs mir schon ausgeben lassen, da funktioniert es:
                          PHP-Code:
                          $result mysql_query($query);
                                              if (
                          $result == true){
                                                  
                          $hinweis 'toll';    
                                              }else {
                                                  
                          $hinweis 'klappt nicht.';    
                                              } 
                          aber jetzt schau ich mir die Seite nochmal an, die hausl gerade geschickt hat.

                          Kommentar


                          • #14
                            Schau dir mal PDO an:
                            http://www.peterkropff.de/site/php/pdo.htm

                            alternativ noch mysqli_*, ich persönlich bevorzuge aber ersteres.

                            Kommentar


                            • #15
                              Erstaunlich, wenn ich es auf diese Weise überprüfe, bekomme ich eine Fehlermeldung:
                              (die Links habe ich natürlich angepasst)

                              PHP-Code:
                              if (false === mysql_query($dblink$query)) {
                                                     die(
                              mysql_error($dblink)); 
                              --> Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in (Zeile mit o.g. if-Abfrage)

                              Wie kommt das, das meine Überprüfung "nicht so streng" ist?

                              Kommentar

                              Lädt...
                              X