$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, хотя результат $ содержит все пользовательские строки.
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;
http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows
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'];