Heim >Backend-Entwicklung >PHP-Tutorial >PHP-Warnung: mysql_num_rows() erwartet Parameterlösung
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!