wie man diesen Fehler verhindert: Warnung: mysql_fetch_assoc () erwartet Parameter 1 als Ressource, boolean gegeben in ... in Zeile 11 [duplizieren]

8

Ich bin sehr verwirrt mit diesem Fehler, es zeigt, wenn ich versuche, ein Ergebnis von der Datenbank, die nicht existiert ... Ich versuchte mysql_num_rows() , aber es gibt den gleichen Fehler, aber statt mysql_fetch_assoc erwartet ... es sagt mysql_num_rows() erwartet ...

Ich habe error_reporting(0) gesetzt, um zu vermeiden, diesen Fehler anzuzeigen, aber ich bin nicht mit dieser Lösung zufrieden ...

    
Naughty.Coder 27.06.2010, 23:55
quelle

6 Antworten

14

Hier ist der richtige Weg, Dinge zu tun:

%Vor%

Beachten Sie die Überprüfung von (! $ result) - wenn Ihr $ -Ergebnis ein boolescher Wert ist, ist es sicherlich falsch und es bedeutet, dass ein Datenbankfehler aufgetreten ist, was bedeutet, dass Ihre Abfrage wahrscheinlich schlecht war.

    
timdev 28.06.2010, 00:07
quelle
1

Sie müssen überprüfen, ob das von mysql_query zurückgegebene Ergebnis falsch ist.

%Vor%

Sie können @mysql_fetch_assoc($r) verwenden, um eine Fehleranzeige zu vermeiden.

    
Pavel Strakhov 27.06.2010 23:59
quelle
0

Die richtige Syntax ist (im Beispiel):

%Vor%     
cypher 28.06.2010 00:00
quelle
0

So sollten Sie mysql_fetch_assoc () verwenden:

%Vor%

$ result sollte eine Ressource sein. Auch wenn die Abfrage keine Zeilen zurückgibt, ist $ result immer noch eine Ressource. Die einzige Zeit $ result ist ein boolescher Wert, wenn bei der Abfrage der Datenbank ein Fehler aufgetreten ist. In diesem Fall sollten Sie herausfinden, was dieser Fehler ist, indem Sie mysql_error () verwenden und sicherstellen, dass es kann nicht passieren. Dann müssen Sie sich vor Fehlern nicht verstecken.

Sie sollten immer die Basis abdecken, die Fehler können passieren, indem Sie tun:

%Vor%

Dann werden Sie den Fehler wahrscheinlich eher beheben, als den Benutzern einen grellen, hässlichen Fehler in den Augen zu lassen.

    
Joseph Mansfield 28.06.2010 00:04
quelle
0

Sie müssen diese Fehlermeldung nicht verhindern!
Fehlermeldungen sind deine Freunde!
Ohne Fehlermeldung würden Sie nie wissen, was passiert ist.
Es ist alles in Ordnung! Jeder funktionierende Code sollte Fehlermeldungen ausgeben.

Obwohl Fehlermeldungen eine ordnungsgemäße Handhabung erfordern. In der Regel müssen Sie keine besonderen Maßnahmen ergreifen, um solche Fehlermeldungen zu vermeiden. Lass deinen Code einfach intakt. Wenn diese Fehlermeldung dem Benutzer nicht angezeigt werden soll, deaktivieren Sie sie einfach. Keine Fehlermeldung selbst, sondern für den Benutzer.

%Vor%

oder noch besser bei .htaccess / php.ini level
Und Benutzer werden keine Fehlermeldungen sehen. Sie können es zwar weiterhin im Fehlerprotokoll sehen.
Bitte beachten Sie, dass error_reporting in beiden Fällen maximal sein sollte.

Um diese Nachricht zu verhindern, können Sie das Ergebnis von mysql_query prüfen und fetch_assoc nur bei Erfolg ausführen.
Aber normalerweise verwendet niemand es, da es zu viele verschachtelte if's erfordern kann.
Aber es kann auch eine Lösung geben - Ausnahmen!

Aber es ist immer noch nicht notwendig. Sie können Ihren Code so lassen, wie er ist, weil er ohne Fehler funktionieren soll.

Die Verwendung von return ist eine weitere Methode, verschachtelte Fehlermeldungen zu vermeiden. Hier ist ein Ausschnitt aus meiner Datenbank-Handling-Funktion:

%Vor%     
Your Common Sense 28.06.2010 00:12
quelle
-2

Wenn Sie nur Warnungen von einer Funktion unterdrücken möchten, können Sie ein @ -Zeichen davor einfügen:

%Vor%     
Computerish 27.06.2010 23:59
quelle

Tags und Links