Ankündigung

Einklappen
Keine Ankündigung bisher.

Fehlermeldung in Errorlog wenn Eintrag nicht in DB vorhanden

Einklappen

Neue Werbung 2019

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

  • Fehlermeldung in Errorlog wenn Eintrag nicht in DB vorhanden

    Hey ich bekomme folgende Fehlermeldung in meiner Errorlog angezeigt:

    PHP Warning: mysql_fetch_array() expects parameter 1 to be resource

    das liegt meines Wissens daran, dass der gesuchte Query nicht vorhanden ist. Kann man die Fehlermeldung abfangen und speziell behandeln?

    Beispiel Query:
    PHP-Code:
    mysql_fetch_array(SELECT FROM Discount WHERE (form_id '54968165757be' || form_id '328' || form_id 'all') AND cust_id 'wYbD2myJS9' AND  (disc_start_date NOW() AND disc_end_date NOW()) AND disc_status 'active'"); 
    Da nicht jeder Benutzer einen Eintrag in dieser Tabelle hat wird mir immer der Fehler in der Errorlog ausgegebn - könnte mir da jemand bitte weiterhelfen?

    Falls Ihr noch mehr Informationen braucht, dann sagt kurz bescheid

    Besten Dank im Voraus


  • #2
    Zitat von yee89 Beitrag anzeigen
    Hey ich bekomme folgende Fehlermeldung in meiner Errorlog angezeigt:

    PHP Warning: mysql_fetch_array() expects parameter 1 to be resource

    das liegt meines Wissens daran, dass der gesuchte Query nicht vorhanden ist.

    Nein.
    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

    Kommentar


    • #3
      Zitat von yee89 Beitrag anzeigen
      Beispiel Query:
      PHP-Code:
      mysql_fetch_array(SELECT * []); 
      Wirf bitte nochmal einen Blick ins Handbuch wie man die Funktion richtig verwendet - und beachte gleich die dicke, rote Warnung am Anfang der Handbuchseite!

      Kommentar


      • #4
        Okay besten Dank - werde ich auf mysqli umstellen und @akretschmer - deine antwort bringt null - spar sie dir einfach

        Kommentar


        • #5
          Zitat von yee89 Beitrag anzeigen
          @akretschmer - deine antwort bringt null - spar sie dir einfach
          für Dich doch immer gerne.
          PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

          Kommentar


          • #6
            Du kannst (solltest nicht) das so machen:

            PHP-Code:
            mysqli_fetch_array(mysqli_query($connectionSELECT FROM Discount WHERE (form_id '54968165757be' || form_id '328' || form_id 'all') AND cust_id 'wYbD2myJS9' AND  (disc_start_date NOW() AND disc_end_date NOW()) AND disc_status 'active'")); 
            mysqli_fetch-Dinger brauchen ein Result-Objekt was du nicht durch einen String bekommst. Erst mysqli_query() führt den Query aus und besorgt dir das Result-Objekt. Aber: Wenn die Quer fehlerhaft ist, sagt er dir dass er ein Parameter vom Typ Result braucht und nicht false, weil bei Fehlern gibt mysqli_query false zurück. Besser wäre immer zu prüfen mit if(!mysqli_query("SELECT ...")) echo mysqli_error();

            Kommentar


            • #7
              ah sorry jungs - hatte auch den query falsch aufgeschrieben - dazwischen muss natürlich noch msyql_query() - @spamversender ich werde mir gleich mal mysqli genauer anschauen und meine classe umschreiben

              Kommentar


              • #8
                Zitat von Spamversender Beitrag anzeigen
                Du musst das so machen:
                Nein! Mal abgesehen davon dass der Müll einen Syntaxfehler ausspuckt: niemals die Funktionen ineinander verschachtelt, du hast sonst keine Chance eine ordentliche Fehlerbehandlung zu machen und der Code wird unlesbar. Ganz davon zu schweigen dass bei mysqli_query() noch der Parameter mit der Datenbankverbindung fehlt ...

                Kommentar


                • #9
                  @TE: Man muss sowas nicht in einer einzelnen Zeile unterbringen. Gut lesbaren Code zu schreiben hilft solche Fehler zu erkennen.
                  Sieh dir mal die Beispiele an, das ist auch gleich die Fehlerbehandlung mit drin http://php.net/manual/de/mysqli.query.php

                  Das gleiche gilt für deinen SQL-Code. Wenn es komplexer wird, helfen Einrückungen sehr.
                  Damit kannst du ihn in eine gute Form bringen: http://www.freeformatter.com/sql-formatter.html
                  Code:
                  SELECT
                     * 
                  FROM
                     Discount 
                  WHERE
                     (
                        form_id = '54968165757be' || form_id = '328' || form_id = 'all'
                     ) 
                     AND cust_id = 'wYbD2myJS9' 
                     AND  (
                        disc_start_date < NOW() 
                        AND disc_end_date > NOW()
                     ) 
                     AND disc_status = 'active'
                  Dann noch was zum Nachlesen: http://php-de.github.io/jumpto/code-smells/#select-
                  Relax, you're doing fine.
                  RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

                  Kommentar

                  Lädt...
                  X