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

  • #16
    Danke für eure Seiten bezüglich PDO und mysqli - die werde ich mir mal in Ruhe anschauen!

    Kommentar


    • #17
      Um was geht es jetzt? #12 und #13 sind ja 2 verschiedenen Aufrufe, stell die Syntax richtig und schau was die Fehlermeldung bemängelt. Ich würde vorschlagen du spielst mal wenig rum und wenn du noch konkrete Fragen hast und nicht weiterkommst dann hier. Irgendwie "überschlägst" du dich gerade.
      The string "()()" is not palindrom but the String "())(" is.

      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


      • #18
        Was ich nicht verstehe ist folgendes:

        PHP-Code:
        $query "SELECT * from `".$dblink."` WHERE ARTIKEL_ID IN('".$articleString."')";                       
                            
        $result mysql_query($query) ;
                            
                            if (
        $result == true){
                                
        $hinweis 'toll';    
                            }else {
                                
        $hinweis 'klappt nicht.';    
                            } 
        --> Diese Überprüfung sagt "toll".

        Diese hier zeigt mir die Fehlermeldung "mysql_query(): supplied argument is not a valid.." an:

        PHP-Code:
        $query "SELECT * from `".$dblink."` WHERE ARTIKEL_ID IN('".$articleString."')";                       
                            
        mysql_query($query) ;
                            
                            
                            if (
        false == mysql_query($dblink$query)) {
                               die(
        mysql_error($dblink));
                            } 
        Aber überprüfen nicht beide dasselbe? Nämlich, ob die Verbindung und Datenbankabfrage reibungslos funktioniert?

        Kommentar


        • #19
          mysql_query() schickt die query an die DB, dh diese wird ausgeeführt. Siehe auch Doku!

          Der zweite Code.. vergiss den, lösche den. Da wird mysql_query() zwei mal ausgeführt (warum?) und beim zweiten mal mit zwei (falschen) Parametern.

          Eine Funktion wird auch im Vergleich ausgeführt, also if (mysql_query(...) == true) führt die Funktion aus und vergleicht deren Rückgabewert in der Bedingung.

          Und die Abfrage hier kannst du dir auch sparen:

          PHP-Code:
          $query "SELECT * from `".$dblink."` WHERE ARTIKEL_ID IN('".$articleString."')";                       
                              
          $result mysql_query($query) ;
                              
                              if (
          $result == true){
                                  
          $hinweis 'toll';    
                              }else {
                                  
          $hinweis 'klappt nicht.';    
                              } 
          mach einfach so:

          PHP-Code:
          $query "SELECT * from `".$dblink."` WHERE ARTIKEL_ID IN '".$articleString."')";                       
          var_dumpmysql_query($query) ); 
          Dann siehst du ob ein false bekommst also ein Fehler beim Ausführen der query, (näheres sagt dir mysql_error() ) oder ob du eine "Resouce" bekommst, dh quasi die Daten zur Abholung von der DB bereits gestellt, die du dir dann mit mysql_fetch_... abholen kannst.

          Daher auch die Schreibweise - weil im Fehlerfall die Funktion ein false zurückgibt.

          PHP-Code:
          ... mysql_query($query) or die( mysql_error() ); 
          So und das gilt im Grunde so auch für mysqli_. Das kannst jetzt umbauen. Und lerne die Doku zu lesen, das steht da auch alles mit Beispielen so drinnen.

          LG
          The string "()()" is not palindrom but the String "())(" is.

          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


          • #20
            Die Zweite sagt dir nur das die Variable $dblink keine mysql Verbindung ist, denn DB Link ist in deinem Beispiel der Tabellenname und nicht die Verbindung.

            Kommentar


            • #21
              Alles klar, dankeschön!
              Also wie auch bei meiner ersten Abfrage klappt alles, ich bekomm ein resource zurück.
              Schief gelaufen ist es nur mit der Abfrage, die auf der von dir verweisten Seite stand.
              Mit den Abfragen kenn ich mich ja eig. aus, nur letzteres hat mich verwundert.

              Aber das Ursprungsproblem bleibt - weswegen ich eig. die Abfrage gemacht habe - dass mir nämlich nur ein Ergebnis anstatt die 3 aus dem array ausgegeben werden.

              Kommentar


              • #22
                mal mal bitte
                PHP-Code:
                var_dump($clean_array); 

                Kommentar


                • #23
                  Schief gelaufen ist es nur mit der Abfrage, die auf der von dir verweisten Seite stand.
                  Das war auch eine zu mysqli_ und nicht mysql_ !

                  Aber das Ursprungsproblem bleibt - weswegen ich eig. die Abfrage gemacht habe - dass mir nämlich nur ein Ergebnis anstatt die 3 aus dem array ausgegeben werden.
                  Dann lass dir mal die query ausgeben, schrieb ich doch schon und schau was du von der DB "wirklich" anforderst.

                  PHP-Code:
                  $query "SELECT .... ";
                  echo 
                  $query// mach das mal !! 
                  Wenn die korrekt ist dann gibt es dazu halt keine Daten etc..
                  The string "()()" is not palindrom but the String "())(" is.

                  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


                  • #24
                    Das klappt gut. Habs mir auch schon ein einer foreach Schleife ausgeben lassen.

                    array(3) { [2]=> int(1) [3]=> int(2) [4]=> int(21) }


                    Auch $articleString passt: "1','2','21"

                    Kommentar


                    • #25
                      Das ist alles davor !! Lass dir endlich mal die fertige echte(!) von PHP geparste Query ausgeben die du wirklich an die DB schickst, wie oft noch?!

                      Zitat von hausl Beitrag anzeigen
                      Dann lass dir mal die query ausgeben, schrieb ich doch schon und schau was du von der DB "wirklich" anforderst.

                      PHP-Code:
                      $query "SELECT .... ";
                      echo 
                      $query// mach das mal !! 
                      Wenn die korrekt ist dann gibt es dazu halt keine Daten etc..
                      The string "()()" is not palindrom but the String "())(" is.

                      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


                      • #26
                        Das war auch eine zu mysqli_ und nicht mysql_ !
                        Ah, verstehe, und ich dachte, wenn ich einfach das i weglasse, klappt es auch - ohje!


                        Dann lass dir mal die query ausgeben, schrieb ich doch schon und schau was du von der DB "wirklich" anforderst.
                        resource( 8 ) of type (mysql result)

                        --> SELECT * from `BT-NR 312` WHERE ARTIKEL_ID IN('1','2','21')



                        Okay, dann wird es wohl an der Ausgabe liegen - dann überprüfe ich die jetzt nochmal!!

                        Kommentar


                        • #27
                          [del]
                          The string "()()" is not palindrom but the String "())(" is.

                          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


                          • #28
                            Zitat von Die_Brini Beitrag anzeigen
                            Code:
                            SELECT * from `BT-NR 312` WHERE ARTIKEL_ID IN('1','2','21')
                            Okay, dann wird es wohl an der Ausgabe liegen - dann überprüfe ich die jetzt nochmal!!
                            Du kannst die Query ja auch zB direkt im phpMyAdmin laufen lassen, dann siehst du völlig losgelöst von der PHP Ausgabe was dir die MySQL-DB ausgibt.
                            The string "()()" is not palindrom but the String "())(" is.

                            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


                            • #29
                              Ah, okay. Bringt mir hier nur in meinem Fall nichts, weil ich mit Sessions arbeite. Aber trotzdem interessant.

                              Bei meinem Code komm ich nicht wirklich drauf, wieso er mir nur ein Ergebnis anzeigt.
                              Aber vll. hab ich grad völlig den Blick dafür verloren und ich schreibe nur Unsinn.

                              PHP-Code:

                               
                              foreach($_SESSION['cart'] as $key => $value){
                                                  
                              $query "SELECT * from `".$_SESSION['artikel-site']."` WHERE ARTIKEL_ID IN('".$articleString."')";                       
                                                  
                              $result mysql_query($query) ; 
                                                  
                                                    
                              $data mysql_fetch_array($result);
                                                  
                              $artnr $data["ARTNR"];
                                                  
                              $netto $data["NETTO"];
                                                  
                                                  echo 
                              '<td>'.$artnr.'</td>';
                                                  echo 
                              '<td>'.$netto.' €</td>';


                              Übrigens brauche ich hier wohl tatsächlich `backticks` statt Hochkommas, weil ich Sonderzeichen im Tabellenname habe.



                              --> Sekunde. Ich merke gerade, da stimmt vorne und hinten was nicht. Ich geh das alles erst noch mal Schritt für Schritt durch bevor ich eure Zeit weiter in Anspruch nehmen.
                              Aber ich sage schon mal vielen Dank für eure Hilfe!!! Ich bin jetzt schon deutlich weiter.

                              Kommentar


                              • #30
                                Bringt mir hier nur in meinem Fall nichts, weil ich mit Sessions arbeite
                                Sicher, du kannst die Ausgabe von echo $query 1:1 da reinkopieren, wenn dann drei Sätze kommen und du in PHP nur einen hast stimmt deine Ausgabeschleife nicht - und es schaut auch danach aus in dem Code in #29.

                                Bzgl. der Code von #29 schaut überhaupt etwas seltsam aus..

                                1. Wo wird $articleString erzeugt? Sicher das das auserhalb der Schleife korrekt ist, also sich die Werte im Zuge der Schleife nicht ändern sollen?

                                2. Du baust eine foreach-Schleife und greifst in dieser kein einziges mal auf $key oder $value zu, warum dann die Schleife?

                                3. Query innerhalb des sinnlosen(?) foreach() das geht sicher besser. Queries in Schleifen sind grundsätzlich zu vermeiden bzw. gibt meist bessere alternativen.

                                4. Du musst auf mysql_fetch_array() auch eine Schleife machen, siehe die Beispiele in der Doku. Ich würde sowieso mysql_fetch_assoc() verwenden. http://php.net/manual/de/function.mysql-fetch-assoc.php

                                Ja, irgendwie sieht das alles seltsam aus, ohne weitere Details kann man aber nicht viel dazu sagen, das musst du fast selbst ausarbeiten - durch-debuggen (Links siehe weiter oben) oder machen lassen -> http://www.php.de/scriptboerse/

                                UND: mysql_ wird bald nicht mehr funkitonieren, weil es bald aus PHP rausfällt !

                                LG
                                The string "()()" is not palindrom but the String "())(" is.

                                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

                                Lädt...
                                X