Vor einiger Zeit stöberte ich mit SQLite herum und versuchte, einige meiner Seiten zu portieren, um sie anstelle von MySQL zu verwenden. Ich habe auf das Fehlen einer Funktion zum Zählen der Ergebnisse, wie PHP mysql_num_rows()
hängen. Nachdem ich etwas gesucht hatte, entdeckte ich this mail list, was (wie ich es verstehe) sagt, dass SQLite diese Funktionalität nicht hat, weil es ineffizient ist. Es besagt, dass es eine schlechte Form ist, Code zu schreiben, der wissen muss, wie viele Zeilen zurückgegeben werden.Ist mysql_num_rows effizient und/oder Standard-Praxis?
Ich verwende allgemein mysql_num_rows
, um auf leere Rückkehrergebnisse zu überprüfen. Zum Beispiel:
$query = "SELECT * FROM table WHERE thing = 'whatever'";
$results = mysql_query($query);
if (mysql_num_rows($results)) {
while ($row = mysql_fetch_array($results)) {
echo "<p>$row[whatever]</p>";
}
} else {
echo "<p>No results found</p>";
}
Die heftige Abneigung gegen den Begriff der mysql_num_rows()
in der SQLite-Gemeinschaft macht mich fragen, ob es das schrecklich effizient für regelmäßige MySQL in PHP ist.
Gibt es einen besseren, akzeptierten Weg zur Überprüfung der Größe eines MySQL-Ergebnissatzes in PHP neben mysql_num_rows()
?
EDIT: Ich verwende nicht nur mysql_num_rows
, um die Anzahl zu bekommen - ich würde eine COUNT
Abfrage dafür verwenden. Ich benutze es, um zu prüfen, ob es Ergebnisse gibt, bevor alles ausgegeben wird. Dies ist nützlich für die Anzeige von Suchergebnissen - es ist nicht immer garantiert, dass Ergebnisse angezeigt werden. In SQLite-Welt muss ich eine COUNT
Abfrage senden, überprüfen, ob es etwas gibt, und dann eine SELECT
Abfrage senden, um alles zu bekommen.
Excellent existieren - ich nicht über die falsche Rückkehr von mysql_query nicht kannte. – Andrew
Ja. Deshalb funktioniert das while ($ row = ...). –