Quantidade de registros (mysqli)

999 views
Skip to first unread message

jlrifer

unread,
Nov 26, 2009, 6:04:26 AM11/26/09
to GOPHP
Bom dia pessoal,

Eu estou trabalhando no desenvolvimento de um sistema PHP+MYSQL usando
mysqli e estou precisando buscar a quantidade total de registros de
uma determinada tabela, porém de todo jeito que eu faço não dá certo,
alguém já utilizou o mysqli e sabe como fazer?

Eu li no php.net que mysqli_affected_rows() retorna a quantidade de
registros da query anterior daí tentei fazer assim:

public function totalTemp {
$bd = self::connect();
$consulta = "SELECT * FROM temp";
$busca = $bd->query($consulta);
$total = mysqli_affected_rows($busca);
return $total;
}

Está retornando: "Warning: mysqli_affected_rows() expects parameter 1
to be mysqli".

Desde já, muito obrigado pela atenção.

Brenno Ferreira

unread,
Nov 26, 2009, 6:07:38 AM11/26/09
to go...@googlegroups.com
Grande tenta mudar a sua query. Caso ela seja apenas uma query de consulta simples, tenta:

"SELECT COUNT(campo_da_tabela) AS total FROM temp"

Atenciosamente,

Brenno Ferreira
Desenvolvedor Web

2009/11/26 jlrifer <jorgefari...@gmail.com>

Jorge Fernandes

unread,
Nov 26, 2009, 6:22:21 AM11/26/09
to go...@googlegroups.com
Muito obrigado Brenno, consegui resolver aqui usando a sua dica, mudei a minha query para: "SELECT campo_da_tabela, COUNT(campo_da_tabela) AS total FROM tabela". Funcionou direitinho. \o/

2009/11/26 Brenno Ferreira <brdesig...@gmail.com>



--
Jorge Fernandes

Pedro Ivo B. Gimenes

unread,
Nov 26, 2009, 6:25:23 AM11/26/09
to go...@googlegroups.com
cuidado

se vc usar count e ao mesmo tempo buscar o campo (como vc falou ai),
vc tem que usar um group by ou dará problema

http://dev.mysql.com/doc/refman/4.1/pt/documenters-translators.html

comece por esse link e no final da página tem um link: "next" e faça
dele sua leitura nos próximos meses e não tenha mais problemas como
esse.. além de se divertir muito.

particularmente, acho brincar com sql a coisa mais divertida de todas ;)

2009/11/26 Jorge Fernandes <jorgefari...@gmail.com>:
--
Pedro Ivo Branquinho Gimenes
"音乐可以结束,生命可以结束,理想不会"

Jorge Fernandes

unread,
Nov 26, 2009, 6:56:03 AM11/26/09
to go...@googlegroups.com
Obrigado Pedro Ivo, já li a parte do COUNT lá e mudei minha query para "SELECT COUNT(*) AS total FROM tabela" e eu vou ler o manual sim, aproveitar o tempo de férias chegando para aprender e não ter esse tipo de problema mais.

Bom dia! \o/


2009/11/26 Pedro Ivo B. Gimenes <lista...@gmail.com>



--
Jorge Fernandes

Wender Fernandes

unread,
Nov 26, 2009, 12:16:12 PM11/26/09
to go...@googlegroups.com
Só complementando... uma utilização da função mysql_affected_rows() seria verificar linhas alteradas por uma gravação, inserção ou deleção de registro.

2009/11/26 jlrifer <jorgefari...@gmail.com>

Wescley Costa (a.k.a. Narixx)

unread,
Nov 26, 2009, 12:31:18 PM11/26/09
to go...@googlegroups.com
se o lance é só saber a quantidade de registro num determinada tabela, pq não usa mysqli_result->num_rows???

http://br.php.net/manual/pt_BR/mysqli-result.num-rows.php


Att,
Wescley Costa (A.K.A. Narixx)
E-mail/Msn/Gtalk: nar...@gmail.com
Site: narixx.wordpress.com
Twitter: www.twitter.com/narixx

Pense em sua responsabilidade com o MEIO AMBIENTE



-----------------------------------------------------------------------------------


2009/11/26 Wender Fernandes <wende...@gmail.com>

Pedro Ivo B. Gimenes

unread,
Nov 26, 2009, 12:41:22 PM11/26/09
to go...@googlegroups.com
faz um teste ai

executa a query:
select count(chave_primaria) from tabela 10mil vezes

e depois faz a:
select select * from mesma_tabela

as mesmas 10mil vezes

e ve qual demora mais e anota o resultado, rsrs.

dai dps faz o mesmo teste no php usando alguma classe de orm, que
além de fazer a consulta no banco faz um (ou vários) binds em memória.

=)

2009/11/26 Wescley Costa (a.k.a. Narixx) <nar...@gmail.com>:

Wescley Costa (a.k.a. Narixx)

unread,
Nov 26, 2009, 12:51:58 PM11/26/09
to go...@googlegroups.com
não entendi... essa resposta foi pro q eu disse??




Att,
Wescley Costa (A.K.A. Narixx)
E-mail/Msn/Gtalk: nar...@gmail.com
Site: narixx.wordpress.com
Twitter: www.twitter.com/narixx

Pense em sua responsabilidade com o MEIO AMBIENTE



-----------------------------------------------------------------------------------


2009/11/26 Pedro Ivo B. Gimenes <lista...@gmail.com>
?

Pedro Ivo B. Gimenes

unread,
Nov 26, 2009, 1:09:07 PM11/26/09
to go...@googlegroups.com
sim.

essa seria a pior opção de todas para saber quantos registros existe
em uma tabela. talvez só não perderia de iterar sobre todos os
registros, no php, e depois imprimir o resultado do contador do for.

pois se quer saber de todos os registros, tem que fazer um select *
(ou usando alguma coluna) e toda sql que nao usa where faz um full
table scan que é uma das rotinas mais lentas de qq banco de dados.

;)

Andre Rodovalho

unread,
Nov 26, 2009, 1:17:14 PM11/26/09
to go...@googlegroups.com
Bom, em termos de performance, seria melhor mesmo usar
count(um_indice_qualquer) ou simplesmente count(1)...

Agora a questão do affected_rows, se tiver que executar a query para
pegar resultado, é melhor usá-la, já que a query vai ser executada
msm... Se for uma questão apenas de contabilização, é claro que vai
usar o count(1)

Pelo que parece, ele ta tentando fazer um metodo pra pegar a
quantidade de linhas de uma tabela, dependendo do objetivo final que
ele deseja, seria mais inteligente executar a query e puxar o total
com affetcted_rows

2009/11/26 Pedro Ivo B. Gimenes <lista...@gmail.com>:

Wescley Costa (a.k.a. Narixx)

unread,
Nov 26, 2009, 1:28:50 PM11/26/09
to go...@googlegroups.com
Boto fé!

;-)





Att,
Wescley Costa (A.K.A. Narixx)
E-mail/Msn/Gtalk: nar...@gmail.com
Site: narixx.wordpress.com
Twitter: www.twitter.com/narixx

Pense em sua responsabilidade com o MEIO AMBIENTE



-----------------------------------------------------------------------------------


2009/11/26 Andre Rodovalho <andre.r...@gmail.com>

felipe moraes

unread,
Nov 26, 2009, 1:36:29 PM11/26/09
to go...@googlegroups.com
mysql_num_rows -> SELECT

conta a quantidade de linhas do select

mysql_affected_rows -> INSERT e UPDATE ..

informa quantas linhas foram afetadas durante a modificação da tabela ..

simples assim :D

felipe moraes

unread,
Nov 26, 2009, 1:38:00 PM11/26/09
to go...@googlegroups.com
mysql_affected_rows -> INSERT, UPDATE .. e DELETE

esqueci do delete .. :D

Eddy Nascimento

unread,
Nov 26, 2009, 10:28:27 AM11/26/09
to go...@googlegroups.com
Boa tarde.
Tenta com o mysql_num_rows($result).

2009/11/26 jlrifer <jorgefari...@gmail.com>



--
---------------------------------------------
Edmilson Nascimento de Jesus
Bacharel em Sistemas de Informação
Universidade Estadual de Goias
Desenvolvimento de T.I. para Web
---------------------------------------------
Reply all
Reply to author
Forward
0 new messages