Вопрос

$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;

http: //dev.mysql .com / DOC / RefMan / 5.0 / о / информационно-functions.html # function_found-строка

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'];
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top