2016-06-15 7 views
0

Ich habe eine Abfrage, die gut funktionieren, aber das Problem ist irgendwie, es gibt mir die Warnung, wenn keine Daten aus der Datenbank übereinstimmen.mysql_num_rows gibt Waring, wenn keine Daten in der Datenbank gefunden

$count = mysql_num_rows($qry); //warning here 

Ich kann @ verwenden, um die Fehler zu verstecken, aber das ist nicht gut Programmierung so weit ich weiß, so wie kann ich die Warnung von dem Ausgang zu verbergen?

Die Warnung: Warning: mysql_num_rows() erwartet 1 Parameter Ressource, boolean in [somepage.php] on line [11]

$count = @mysql_num_rows($qry); //No warning 

Also ich weiß, dass es zu sein werden die Wege sein, die Warnung zu verbergen, aber ich weiß es nicht. Bitte hilf mir dabei.

+1

error_reporting (~ E_WARNING); –

+0

Was macht das? –

+0

Verstecken Sie Ihre Warnung von der aktuellen Seite im Browser. –

Antwort

2

Einige Leute sagen, dass Sie dieses Problem umgehen sollten, indem Sie Warnungen unterdrücken. Höre nicht auf sie - Warnungen sagen dir, dass etwas nicht stimmt. Sie zu unterdrücken, besiegt ihren gesamten Zweck.

Ich nehme auch an, dass Sie wissen, dass die mysql_ Funktionen zugunsten mysqli veraltet sind. Andere haben dies erwähnt und sie haben absolut Recht - es gibt eine Reihe von Sicherheitsproblemen mit der mysql Erweiterung. Es ist so schlimm, dass Sie, wenn Sie auf PHP 7 upgraden wollen, gezwungen sind, mysqli zu verwenden, weil mysql vollständig entfernt wurde.

Aber im Allgemeinen, wenn etwas eine Ressource bei Erfolg und false bei einem Fehler zurückgibt, können Sie vor der Verwendung der Ressource auf Fehler überprüfen. Wie so:

$rslt = mysql_query($query); 
if (!$rslt) 
{ 
    // handle error 
} 
else 
{ 
    $count = mysql_num_rows($rslt); 
    // ... 
} 

Als Alternative Ergebnis als boolean auf die Überprüfung, könnte man die Fälle tauschen und is_resource verwenden.

+0

Danke für Ihren Vorschlag. –

+0

Besser, mysql_ * überhaupt nicht zu verwenden –

Verwandte Themen