FOUND_ROWS () продолжает возвращать 0
Вопрос
$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 (), должен работать, но это не так.
Решение
На php.net я нашел кого-то с такой же проблемой. Он говорит о состоянии гонки, которое может возникнуть: php .net . По сути, он решает эту проблему путем временной блокировки таблицы за счет замедления работы.
Другие советы
LIMIT
требуется для правильной работы found_rows ()
Добавьте LIMIT в конец вашего запроса, т.е.
.SELECT SQL_CALC_FOUND_ROWS * FROM users LIMIT 0,10;
FOUND_ROWS ()
- для SELECT с предложением LIMIT количество возвращаемых строк не было бы предложением LIMIT
Я не уверен, какую библиотеку базы данных вы используете, но похоже, что вы пытаетесь подсчитать количество строк в операторе select в php из базы данных mysql.
Вы пытались проверить, работает ли он со встроенными функциями базы данных mysql в php?
$count_result = mysql_query("SELECT COUNT(*) as totalcount FROM users");
$row = mysql_fetch_array($count_result);
$total = $row['totalcount'];