2009-06-20 9 views
2
$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 gibt 0 zurück, obwohl das $ result alle Benutzerzeilen enthält.FOUND_ROWS() liefert 0

Ich habe über diese Einstellung durch die Suche nach einem ähnlichen Q hier herausgefunden, aber es hat mein Problem nicht gelöst.

Wenn ich die 2 Select-Anweisungen in meinem MySQL-Client verwende, gibt es immer die richtige Anzahl aus. Ich kann einfach nicht herausfinden, wie es funktioniert auf meiner PHP-Seite.

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 veranschaulicht, mit denen mich mit Die Gesamtanzahl kann nicht abgerufen werden. Dieser Code, von dem, was ich über found_rows() gelesen habe, sollte funktionieren, tut es aber nicht.

+0

@Seth: Haben Sie versucht, die LIMIT-Klausel hinzuzufügen? – gahooa

+0

ini_set ("mysql.trace_mode", "0"); löse mein Problem. Danke für die Frage :) –

Antwort

1

auf php.net mich jemand mit vielleicht fand die gleiches Problem. Er spricht von einer Race Condition, die auftreten könnte: php.net. Im Grunde löst er dieses Problem, indem er den Tisch vorübergehend auf Kosten der Verlangsamung verriegelt.

+0

Ich habe diesen Beitrag gefunden, als ich gegoogelt habe. Ich schätze, ich werde wieder mit count (*) anfangen. – Seth

-3

Ich bin nicht sicher, welche Datenbank-Bibliothek Sie verwenden, aber es sieht so aus, als ob Sie versuchen, die Anzahl der Zeilen in einer Select-Anweisung in PHP aus einer MySQL-Datenbank zu zählen.

Haben Sie versucht zu sehen, ob es mit den eingebauten MySQL-Datenbankfunktionen in PHP funktioniert?

$count_result = mysql_query("SELECT COUNT(*) as totalcount FROM users"); 
$row = mysql_fetch_array($count_result); 

$total = $row['totalcount']; 
+0

-1: beantwortet nicht die ursprüngliche Frage über LIMIT, und FOUND_ROWS() – gahooa

1

LIMIT erforderlich FOUND_ROWS() korrekt funktioniert

hinzufügen LIMIT bis zum Ende der Anfrage, das heißt zu machen.

SELECT SQL_CALC_FOUND_ROWS * FROM users LIMIT 0,10; 

http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows

FOUND_ROWS() - Für eine SELECT mit einer LIMIT-Klausel, die Anzahl der Zeilen, die zurückgegeben werden würden gab es keine LIMIT-Klausel

+0

Auch mit der Limit-Klausel bekomme ich 0 für totalcount. – Seth