Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] SQL Abfrage in Funktion einbauen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] SQL Abfrage in Funktion einbauen

    Hallo,

    ich bin gerade dabei mein Programm mittels Funktionen etwas zu verkürzen da der Überblick da deutlich leichter fällt.

    So nun habe ich in meiner if Anweisung im Hauptprogramm eine SQL Abfrage und übergebe u.a. diese an meine Funktion.

    In der Funktion hol ich mir dann per mysql_num_rows und mysql_query die Datensätze.

    Die Ausgabe erscheint auch nur das zusätzlich noch ein Fehler erscheint obwohl es eigentlich alles funktioniert.

    Fehlermeldung ist diese:

    "Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in ....."

    Zum besseren Verständis mal zwei Teile des Quelltextes.


    Hier die Funktion:
    PHP-Code:
    function PrintAllContent($sql,$suchetest$suchetest1$suchetest2$suchetest3$suchetest4,
                             
    $datum_tag$datum_monat$datum_jahr)
    {
        
    $anfrage mysql_query($sql);
        echo 
    $sql;
        
    $anzahl mysql_num_rows($anfrage);

        if (
    $anzahl == true) {
            echo 
    '<table cellpadding="1" cellspacing="1" >
                                    <tr>'
    ;
            
    PrintHeadTable("Test.");
            
    PrintHeadTable("Test1.");
            
    PrintHeadTable("Test2.");
            
    PrintHeadTable("Test3.");
            
    PrintHeadTable("Test4.");
            
    PrintHeadTable("Test5.");
            
    PrintHeadTable("Test6");
            echo
    '</tr>
                    <tr>
                        <td> </td>
                    </tr>'
    ;
            while (
    $daten mysql_fetch_array($anfrage))
            {
                
    extract($daten);
                
    date_default_timezone_set("Europe/Berlin");
                ................... 
    Hier die Hauptteil inklusive Aufruf der Funktion

    PHP-Code:

    if ($_POST['test'] || isset($_GET['test']) && $_GET['test'] != "")
                        {
                            
    $richtig 1;
                            
    $sql    =     "    SELECT    *
                                            FROM    Test
                                            WHERE    Test = '"
    .test."'";
                            
    PrintAllContent($sql$suchetest $suchetest1$suchetest2$suchetest3,
                                            
    $suchetest4$datum_tag$datum_monat$datum_jahr);
                        } 
    Der einzige Grund (für mich) warum dieser Fehler erscheint könnte dieser sein das die Abfrage im Hauptteil und der Rest in der Funktion steht.

  • #2
    [man]mysql_query[/man] Schau dir im Handbuch an, wie man korrekt auf fehler prüft.
    Unabhängig davon ist dein Programm kaputt und funktioniert so schonmal gar nicht, wie du es hier gepostet hast.

    P.S.: Beschäftige dich mit dem Thema SQL-Injection.

    Kommentar


    • #3
      Zitat von mepeisen Beitrag anzeigen
      [man]mysql_query[/man] Schau dir im Handbuch an, wie man korrekt auf fehler prüft.
      Unabhängig davon ist dein Programm kaputt und funktioniert so schonmal gar nicht, wie du es hier gepostet hast.

      P.S.: Beschäftige dich mit dem Thema SQL-Injection.
      Es ist ja auch nur ein Teil des Programms und nicht alles. Was meinst du wozu ich die Punkte gesetzt habe.

      Kommentar


      • #4
        Ich meine deinen zweiten Teil. Schau mal, was hier das Forum rein farblich draus macht. Da fehlt ein Anführungszeichen beim isset($_GET...). Zudem nochmal: Schau dir das Handbuch an und das Thema SQL-Injection. mein Hinweis auf das Handbuch bzw. die Fehlerprüfungen sind ernst gemeint.

        Kommentar


        • #5
          Zitat von mepeisen Beitrag anzeigen
          Ich meine deinen zweiten Teil. Schau mal, was hier das Forum rein farblich draus macht. Da fehlt ein Anführungszeichen beim isset($_GET...). Zudem nochmal: Schau dir das Handbuch an und das Thema SQL-Injection. mein Hinweis auf das Handbuch bzw. die Fehlerprüfungen sind ernst gemeint.
          Das mit dem Anführungszeichen liegt darin weil ich den Inhalt rausgelöscht habe und test eingefügt habe und dadurch wahrscheinlich ich das Zeichen mit weggelöscht habe.

          Kommentar


          • #6
            Wenn du keine Lust hast meine Hinweise ernst zu nehmen, dann lass es halt. Das alles (Copy&Paste-Fehler hin oder her) ändert nichts daran, dass deine MySQL-Abfrage ungültig ist und dir bei korrekter Fehlerbehandlung das MySQL sagt, was falsch ist.
            Ist es auch ein Copy&Paste-Fehler, dass du test als Konstante und nicht als Variable verwendest um den SQL zusammenzubauen? Woher kommt $test? Wer setzt es und wann? Wieso hast du error_reporting nicht an?

            Kommentar


            • #7
              Zitat von mepeisen Beitrag anzeigen
              Wenn du keine Lust hast meine Hinweise ernst zu nehmen, dann lass es halt. Das alles (Copy&Paste-Fehler hin oder her) ändert nichts daran, dass deine MySQL-Abfrage ungültig ist und dir bei korrekter Fehlerbehandlung das MySQL sagt, was falsch ist.
              Ist es auch ein Copy&Paste-Fehler, dass du test als Konstante und nicht als Variable verwendest um den SQL zusammenzubauen? Woher kommt $test? Wer setzt es und wann? Wieso hast du error_reporting nicht an?
              Das habe ich nicht behauptet ! Ich verstehe nur nicht warum du meinst das gleich die ganze Abfrage falsch ist, weil vorher es einwandfrei lief und es mir nur um die Sache ging ob es funktioniert das ich die Abfrage im Hauptteil einbringe und an eine Funktion übergebe.

              $test übergebe ich per POST.

              Kommentar


              • #8
                Das sagt halt deine Fehlermeldung:


                Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in ....


                Sprich wenn $anfrage kein gültiges result ist kann nur etwas mit deinem Query (oder mit deiner Datenbankverbindung) nicht stimmen.
                Mach doch einfach mal

                PHP-Code:
                mysql_query($sql) or die(mysql_error()); 
                dann wird er dir schon verraten was nicht passt...

                Kommentar


                • #9
                  Zitat von Sevarox Beitrag anzeigen
                  Das habe ich nicht behauptet ! Ich verstehe nur nicht warum du meinst das gleich die ganze Abfrage falsch ist, weil vorher es einwandfrei lief und es mir nur um die Sache ging ob es funktioniert das ich die Abfrage im Hauptteil einbringe und an eine Funktion übergebe.
                  Varon war schneller. Aber sowas beratungsresistentes habe ich noch nicht erlebt. Seis drum...

                  Davon abgesehen:

                  Zitat von Sevarox Beitrag anzeigen
                  $test übergebe ich per POST.
                  Ähhhm. Nö. Tust du nicht. http://www.php.de/wiki-php/index.php...i-Direktive%29

                  Kommentar


                  • #10
                    Zitat von Varon Beitrag anzeigen
                    Das sagt halt deine Fehlermeldung:


                    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in ....


                    Sprich wenn $anfrage kein gültiges result ist kann nur etwas mit deinem Query (oder mit deiner Datenbankverbindung) nicht stimmen.
                    Mach doch einfach mal

                    PHP-Code:
                    mysql_query($sql) or die(mysql_error()); 
                    dann wird er dir schon verraten was nicht passt...
                    mysql_error habe ich bereits ausprobiert wobei er mir keine Fehlermeldung anzeigt. Erstmal danke für die schnelle Hilfe.

                    Zitat von mepeisen Beitrag anzeigen
                    Varon war schneller. Aber sowas beratungsresistentes habe ich noch nicht erlebt. Seis drum...

                    Davon abgesehen:


                    Ähhhm. Nö. Tust du nicht. http://www.php.de/wiki-php/index.php...i-Direktive%29
                    Nimms mir nicht böse aber ich hab halt nicht verstanden warum gleich alles falsch sein sollte.

                    Kommentar


                    • #11
                      möglicherweise hast du die def der db-Connection irgendwo eingebunden, nur deine Funktion kennt die nicht. evtl hilft sowas wie
                      PHP-Code:
                      global $connection
                      hier..

                      Kommentar


                      • #12
                        Zitat von Harry_X Beitrag anzeigen
                        möglicherweise hast du die def der db-Connection irgendwo eingebunden, nur deine Funktion kennt die nicht. evtl hilft sowas wie
                        PHP-Code:
                        global $connection
                        hier..
                        Okay, werde ich mal testen.

                        Wobei doch dann eigentlich gar keine Ausgabe möglich wäre was die Datensätze betrifft ? Und die werden ja angezeigt.

                        Kommentar


                        • #13
                          Dass die Datensätze trotz des Fehlers angezeigt werden halte ich für ein Gerücht. Bist du dir sicher, dass der Fehler bei der Abfrage auftritt, die du da am Wickel hast? Der Hinweis von Harry ist nett, dürfte aber mit dem Problem nichts zu tun haben.

                          Kommentar


                          • #14
                            Zitat von mepeisen Beitrag anzeigen
                            Dass die Datensätze trotz des Fehlers angezeigt werden halte ich für ein Gerücht. Bist du dir sicher, dass der Fehler bei der Abfrage auftritt, die du da am Wickel hast? Der Hinweis von Harry ist nett, dürfte aber mit dem Problem nichts zu tun haben.
                            Das wundert mich eben auch, es läuft alles gut außer das der Fehler erscheint.

                            Hier mal ein Bild als Beweis:

                            Die Schwarze Zeile unter den Tabellenüberschriften ist der Datensatz aus der DB Tabelle und darunter dann die Fehlermeldung.
                            Angehängte Dateien

                            Kommentar


                            • #15
                              Wenn mysql_num_rows mit diesem Fehler zurückkommt, wird dir mysql_fetch_* ebenfalls den gleichen Fehler ausgeben. Da wird nichts an Datensätzen zurückkommen. Ich gehe davon aus, dass du zweimal in die Funktion springst, einmal gültigem SQL, einmal mit ungültigem.

                              Kommentar

                              Lädt...
                              X