Heim >Backend-Entwicklung >PHP-Tutorial >PHP-Warnung: mysql_num_rows() erwartet Parameterlösung

PHP-Warnung: mysql_num_rows() erwartet Parameterlösung

PHPz
PHPzOriginal
2023-06-24 22:07:431679Durchsuche

PHP ist eine weit verbreitete Open-Source-Skriptsprache für die Webentwicklung, bei der viele Webanwendungen (wie WordPress) zum Speichern und Abrufen von Daten auf die MySQL-Datenbank angewiesen sind. Bei Verwendung der Funktion mysql_num_rows() wird jedoch manchmal die folgende Warnung angezeigt:

PHP-Warnung: mysql_num_rows() erwartet, dass Parameter 1 eine Ressource ist, boolean angegeben in...

In diesem Artikel werden wir dieses Problem besprechen. Der Grund und wie man es repariert.

Was ist die Funktion mysql_num_rows()? Die Funktion

mysql_num_rows() wird verwendet, um die Anzahl der aus einer MySQL-Abfrage abgerufenen Zeilen abzurufen. Es akzeptiert eine Ergebnismengenressource als Parameter und gibt die Anzahl der Zeilen oder „false“ zurück, wenn ein Fehler auftritt. Hier ist ein Beispiel:

$result = mysql_query("SELECT * FROM mytable");
$num_rows = mysql_num_rows($result);
echo "Rows: ".$num_rows;

Dies gibt die aus dem abgerufenen Ergebnisse zurück mytable-Tabelle Die Anzahl der erreichten Zeilen. Wenn es sich bei der Ergebnismenge jedoch nicht um eine Ressource handelt, wird eine Warnung angezeigt:

PHP-Warnung: mysql_num_rows() erwartet, dass Parameter 1 eine Ressource ist, boolean gegeben in...

Warum erscheint die Warnung „Boolean gegeben“?

Dieses Problem wird normalerweise durch einen SQL-Abfragefehler verursacht. Bei Verwendung der Funktion mysql_query() kann es sein, dass sie „false“ zurückgibt, was darauf hinweist, dass die Abfrage fehlgeschlagen ist. Wenn wir dieses Ergebnis als Parameter an die Funktion mysql_num_rows() übergeben, wird es als boolescher Wert und nicht als erwartete Ergebnismengenressource interpretiert. Daher erscheint auf der Konsole die Warnung „PHP-Warnung: mysql_num_rows() erwartet, dass Parameter 1 eine Ressource ist, boolean angegeben in …“.

Wie löse ich die Warnung „Boolean gegeben“?

Um dieses Problem zu lösen, müssen wir sicherstellen, dass die SQL-Abfrage erfolgreich ist, bevor wir die Funktion mysql_num_rows() verwenden. Wir können das Ergebnis der Funktion mysql_query() wie folgt überprüfen:

$result = mysql_query("SELECT * FROM mytable");
if($result){
$num_rows = mysql_num_rows($result);
echo "Rows: " .$num_rows;
}

Dadurch wird sichergestellt, dass die Funktion mysql_num_rows() erst verwendet wird, nachdem die Abfrage erfolgreich ausgeführt wurde.

Eine andere Möglichkeit besteht darin, die MySQLi-Erweiterung oder PDO (PHP Data Objects) zu verwenden, um eine Verbindung zur MySQL-Datenbank herzustellen und diese abzufragen. Die MySQLi-Erweiterung bietet eine verbesserte Methode für den Zugriff auf MySQL-Datenbanken, während PDO zum Verbinden und Abfragen verschiedener Datenbanktypen (wie MySQL, PostgreSQL, SQLite) verwendet werden kann.

Hier ist ein Beispiel mit MySQLi:

$conn = mysqli_connect("localhost","username","password","dbname");
if (!$conn) {
die("Verbindung konnte nicht hergestellt werden: " .mysqli_error($conn));
}

$result = mysqli_query($conn,"SELECT * FROM mytable");
if($result){
$num_rows = mysqli_num_rows($result);
echo "Zeilen: ".$num_rows;
}

Darüber hinaus bietet PDO auch eine benutzerfreundliche und sichere Datenbankzugriffsmethode:

$conn = new PDO("mysql:host=localhost;dbname=myDB","username" ,"password");
$result = $conn->query("SELECT * FROM mytable");
if($result){
$num_rows = $result->rowCount();
echo "Zeilen: Die Warnung „.$num_rows;
}

Summary

„boolean gegeben“ bei Verwendung der Funktion mysql_num_rows() wird normalerweise durch eine fehlgeschlagene SQL-Abfrage verursacht. Um dieses Problem zu lösen, müssen wir sicherstellen, dass die Abfrage erfolgreich ist, bevor wir die Funktion mysql_num_rows() verwenden, oder eine andere MySQL-Datenbankzugriffsmethode verwenden, z. B. die MySQLi-Erweiterung oder PDO.

Das obige ist der detaillierte Inhalt vonPHP-Warnung: mysql_num_rows() erwartet Parameterlösung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn