FOUND_ROWS () hält 0 zurückkehr
Frage
$result = $db_con->query("SELECT SQL_CALC_FOUND_ROWS * FROM users LIMIT 0,10");
$count_result = $db_con->query("SELECT FOUND_ROWS() as totalcount");
$row = $count_result->fetch_assoc();
$total = $row['totalcount'];
$ total hält 0 Rückkehr, obwohl das Ergebnis $ enthält alle Benutzer, Zeilen in ihm.
ini_set("mysql.trace_mode", "0");
fand ich über diese Einstellung aus über hier ein ähnlichen Q Suche, aber es hat nicht mein Problem zu beheben.
Wenn ich die 2 select-Anweisungen in meiner MySQL-Client verwenden, gibt es immer die richtige Zählung. Kann einfach nicht scheinen, um herauszufinden, wie es auf meiner PHP-Seite zum Laufen zu bringen.
PHP Version: 5.2.5 build 6 MySQL Version: 5.1.30
Hinweis: Der Code, den ich hier zur Verfügung gestellt wird, nicht auf meinem aktuellen Projekt verwendet werden, jedoch macht es das Problem veranschaulichen ich nicht in der Lage bin, die ist die Gesamtzahl abzurufen. Dieser Code, von dem, was ich über FOUND_ROWS gelesen habe (), sollte funktionieren, aber es funktioniert nicht.
Lösung
Auf php.net fand ich jemand mit vielleicht dem gleichen Problem. Er spricht von einer Race-Bedingung, die auftreten könnten: php .net . Grundsätzlich er löst dieses Problem, indem sie vorübergehend in der Tabelle auf Kosten der Sperr Dinge zu verlangsamen.
Andere Tipps
LIMIT
erforderlich FOUND_ROWS () korrekt funktionieren
Fügen Sie eine Grenze für das Ende Ihrer Abfrage, dh.
SELECT SQL_CALC_FOUND_ROWS * FROM users LIMIT 0,10;
FOUND_ROWS()
- Für eine SELECT mit einer LIMIT-Klausel, die Anzahl der Zeilen, die gab es keine LIMIT-Klausel zurückgegeben würden
Ich bin mir nicht sicher, welche Datenbank-Bibliothek Sie verwenden, aber es sieht aus wie Sie die Anzahl der Zeilen in einer select-Anweisung in PHP aus einer MySQL-Datenbank zu zählen versuchen.
Haben Sie versucht, zu sehen, ob es mit dem eingebauten in MySQL-Datenbank-Funktionen in PHP funktioniert?
$count_result = mysql_query("SELECT COUNT(*) as totalcount FROM users");
$row = mysql_fetch_array($count_result);
$total = $row['totalcount'];