Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Wilian Fiabani

Numero de linhas de consulta com PDO

Recommended Posts

Pessoal, alguém ai sabe me informar se existe alguma propriedade do objeto PDO que informe o número de linhas de uma consulta?

tipo o mysql_num_rows($result_set), só que dentro da PDO, tipo um $conn->num_rows ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

"http://br2.php.net/manual/pt_BR/pdostatement.rowcount.php"

 

PDOStatement::rowCount() returns the number of rows affected by the last DELETE, INSERT, or UPDATE statement executed by the corresponding PDOStatement object.

 

Já li essa parte, mas eu quero as linhas de uma consulta (SELECT).

Compartilhar este post


Link para o post
Compartilhar em outros sites

PDOStatement::rowCount() returns the number of rows affected by the last DELETE, INSERT, or UPDATE statement executed by the corresponding PDOStatement object.

 

If the last SQL statement executed by the associated PDOStatement was a SELECT statement, some databases may return the number of rows returned by that statement. However, this behaviour is not guaranteed for all databases and should not be relied on for portable applications.

 

ou seja, teste kra...

Compartilhar este post


Link para o post
Compartilhar em outros sites

PDOStatement::rowCount() returns the number of rows affected by the last DELETE, INSERT, or UPDATE statement executed by the corresponding PDOStatement object.

 

If the last SQL statement executed by the associated PDOStatement was a SELECT statement, some databases may return the number of rows returned by that statement. However, this behaviour is not guaranteed for all databases and should not be relied on for portable applications.

 

ou seja, teste kra...

ou seja, se postei é pq já tentei e não deu certo. Mas tudo na vida tem solução! sim, ela estava debaixo de meu nariz! nada mais fácil do que dar um count() ou sizeof() no array de objetos retornado pelo método fetchAll(). (E eu me preocupando com o método fetch() http://forum.imasters.com.br/public/style_emoticons/default/blush.gif ) Mas bem que essa PDO poderia ter algun atributo do tipo $result_set->nrw, mas tudo bem hj, varrendo um pouco a api ele aparecerá!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O codigo pronto e esse aqui:

 

 

// conectar com o BD
require_once '../conectar_bd.php';

//Preparar a seleção que no nosso caso e todos por causa do * na tabela foto nomeu caso
$sql_1 = $dsn->prepare("SELECT * FROM foto");

//este e usado para executar a pesquisa a cima, no caso de voces estranhar esse codigo e por que esta em PDO rs, tem mais e pra voce escrever execute e nao executar.
$sql_1->execute();

//Aqui voce é a mesma coisa que o num_rows vai voltar se tudo ok 1
$trg = $sql_1->rowCount();

Compartilhar este post


Link para o post
Compartilhar em outros sites

haha é uma cilada bino!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Queridos, o próprio manual diz que não é confiável utilizar rowCount para SELECT. Parem de teimar, cacilda!

Intereçante isso passo despercebido por mim falem mais sobre isso por favor

Compartilhar este post


Link para o post
Compartilhar em outros sites

putz, porque certas modernidades tem que ser tão complicadas... Era tão fácil com mysql_num_rows($res) e fim de conversa. Agora, conforme diz o Evandro, e de fato olhei no manual do php, além de não dar segurança na resposta para alguns banco de dados, mesmo assim, se quiser tentar a sorte, tem que escrever uns codigos complicados...

já que com PDO tem que fazer um laço for, para simular o mysql_fetch_array, então dentro deste while é só colocar um contador, coloca no dentro do laço for um $linhas++;

Compartilhar este post


Link para o post
Compartilhar em outros sites

putz, porque certas modernidades tem que ser tão complicadas... Era tão fácil com mysql_num_rows($res) e fim de conversa. Agora, conforme diz o Evandro, e de fato olhei no manual do php, além de não dar segurança na resposta para alguns banco de dados, mesmo assim, se quiser tentar a sorte, tem que escrever uns codigos complicados...

já que com PDO tem que fazer um laço for, para simular o mysql_fetch_array, então dentro deste while é só colocar um contador, coloca no dentro do laço for um $linhas++;

O problema é que "certas modernidades" evitam certas atrocidades, quantos sistemas eu peguei com tabelas gigantescas em que alguém ia lá e fazia:

SELECT * FROM tabela

Apenas para depois usar o mysql_num_rows... um absurdo de consumo de recursos. Onde dá pra fazer a mesma coisa usando um simples COUNT e retornando apenas 1 simples linha, mais simples, mais rápido e mais fácil.

Além do que, lembre-se PDO tem que se virar com uma miríade de BDs, se você deseja algo direcionado ao MySQL, basta usar o mysqli, que não por acaso tem o mysqli_num_rows.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.