FOUND_ROWS () продолжает возвращать 0 - PullRequest
3 голосов
/ 20 июня 2009
$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 продолжает возвращать 0, хотя $ result содержит все пользовательские строки в нем.

ini_set("mysql.trace_mode", "0");

Я узнал об этой настройке через поиск аналогичного Q здесь, но он не решил мою проблему.

Когда я использую 2 оператора select в моем клиенте MySQL, он всегда выводит правильное количество. Просто не могу понять, как заставить это работать на моей странице php.

Версия PHP: 5.2.5 build 6 Версия MySQL: 5.1.30

Примечание. Код, который я здесь предоставил, не используется в моем реальном проекте, однако он иллюстрирует проблему, с которой я не могу получить общий счет. Этот код из того, что я читал о found_rows (), должен работать, но это не так.

Ответы [ 3 ]

1 голос
/ 20 июня 2009

LIMIT требуется для корректной работы found_rows ()

Добавьте LIMIT в конец вашего запроса, например.

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() - Для SELECT с предложением LIMIT количество строк, которые должны быть возвращены, если бы не было предложения LIMIT

1 голос
/ 20 июня 2009

На php.net я нашел кого-то, возможно, с такой же проблемой. Он говорит о состоянии гонки, которое может произойти: php.net . По сути, он решает эту проблему, временно блокируя таблицу за счет замедления работы.

0 голосов
/ 20 июня 2009

Я не уверен, какую библиотеку базы данных вы используете, но похоже, что вы пытаетесь подсчитать количество строк в выражении select в php из базы данных mysql.

Вы пытались проверить, работает ли он со встроенными функциями базы данных mysql в php?

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

$total = $row['totalcount'];
...