Pergunta

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

$ totais mantém retornando 0, embora o $ result contém todas as linhas de usuário nele.

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

Eu descobri sobre essa configuração via procurando um Q semelhante aqui, mas não resolveu o meu problema.

Quando eu uso os 2 instruções select no meu cliente MySQL sempre gera a contagem direita. Apenas não consigo descobrir como fazê-lo funcionar na minha página php.

PHP Versão: 5.2.5 construir 6 MySQL Versão: 5.1.30

Nota: O código que eu forneci aqui não está sendo usado no meu projeto atual, no entanto, ele faz exemplificam o problema que estou tendo com a não ser capaz de recuperar a contagem total. Este código, pelo que eu li sobre FOUND_ROWS (), deve funcionar, mas isso não acontece.

Foi útil?

Solução

Em php.net eu encontrei alguém com talvez o mesmo problema. Ele está falando de uma condição de corrida que pode ocorrer: php .net . Basicamente, ele resolve este problema de bloqueio temporário da tabela com o custo de abrandar as coisas.

Outras dicas

LIMIT é necessário para fazer FOUND_ROWS () funcionar corretamente

Adicionar um limite para o fim da sua consulta, ie.

SELECT SQL_CALC_FOUND_ROWS * FROM users LIMIT 0,10;

http: //dev.mysql .com / doc / refman / 5.0 / en / informação-functions.html # function_found-fileiras

FOUND_ROWS() - Para um SELECT com uma cláusula LIMIT, o número de linhas que seria devolvido se não houvesse cláusula LIMIT

Eu não tenho certeza que biblioteca de banco de dados que você está usando, mas parece que você está tentando contar o número de linhas em uma instrução SELECT em php a partir de um banco de dados mysql.

Você tentou ver se ele funciona com o construído em funções de banco de dados mysql em php?

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

$total = $row['totalcount'];
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top