Ir para conteúdo

Arquivado

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

Didi3D

Contagem de rows PHP + MySQLi

Recommended Posts

Pessoal que sacas não estou sabendo utilizar uma função simples do php pra contagem de linhas de um resultado eu crio a seguinte query com MySQLi

$buscar ='SELECT COUNT(title) FROM topicos WHERE title = ?';
       $title = $this->titulo_id;// nome qualquer ex: imasters

	  
/* Prepare statement   */
$stmt = $conn->prepare($buscar);
if($stmt === false) {
  trigger_error('Wrong SQL: ' . $buscar . ' Error: ' . $conn->error, E_USER_ERROR);
} 

/* Bind parameters. TYpes: s = string, i = integer, d = double,  b = blob */
$stmt->bind_param('s',$title); 
  
/* Execute statement */
$stmt->execute(); 
$stmt->store_result();
$t_rows = $stmt->fetch();
echo $t_rows; //aqui deveria(a meu entender) mostrar quantas vezes o titulo "imasters" aparece na consulta mas só retorna 1.

Tentei de outras formas mas também não consegui sempre da algum erro e dessa maneira pelo menos ele acha os resultados porém eu gostaria da contagem de quantas vezes ele achou e não dizer que é 1(true).

 

qualquer ajuda é válida só preciso dentro desse objeto do MySQLi saber em quantas linhas ele existe, obrigado a quem pode ajudar :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então rockrgo, eu já havia utilizado esse exemplo do desse mesmo site que você indicou

<?php
$mysqli = new mysqli("localhost","root", "", "tables");

$query = $mysqli->prepare("SELECT * FROM table1");
$query->execute();
$query->store_result();

$rows = $query->num_rows;

echo $rows;

// Return 4 for example
?>

mas retorna: Fatal error: Call to a member function execute() on a non-object in

 

e outros exemplos que também utilisei apresentavam esse ou outros erros enfim ainda continuo sem saber utilizar =(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tem q usar o num_rows antes do store_result:

<?php
$mysqli = new mysqli("localhost","root", "", "tables");

$query = $mysqli->prepare("SELECT * FROM table1");
$query->execute();


$rows = $query->num_rows;

$query->store_result();
echo $rows;

// Return 4 for example
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem fuçando e funçando até consegui funcionar mais ou menos o código ficou assim:

 

Na sua dica merlinus o resultado foi: 0000000000

$query = $mysqli->prepare("SELECT title FROM topicos WHERE title = '".$this->titulo_id."' ");
$query->execute();
$t_rows = $query->num_rows;
$query->store_result();

echo $t_rows;

Acertando a query pro meu caso de uso e deixando conforme o exemplo do site ficou assim :

$query = $mysqli->prepare("SELECT title FROM topicos WHERE title = '".$this->titulo_id."' ");
$query->execute();
$query->store_result();
$t_rows = $query->num_rows;

echo $t_rows;

Com o store antes do num_rows !

 

Dessa forma ele percorre uma lista mas ele ta se perdendo nas contas por exemplo ele exibe os números das linhas(rows) encontradas

 

Ex: 1-1-0-0-0-1-1-0-0-9 ( sem os traços coloquei só pra visualizar melhor )

 

Ou seja ele até acha as linhas mas ta contando errado rs porque quando eu pesquiso direto na tabela a mesma query retorna outros números de linhas, até curiosos...

 

1º Resultado existe 1 ( ok )

2º Resultado existe 1 ( ok )

3º Resultado existem 3 ( fail ) e não 0 conforme ele exibe

4,5,6,7,8,9 ele se perde nas contas também

10º Resultado existe 9 ( ok )

 

Ou seja não entendi como ele pode exibir a número de linhas em que o titulo existe na tabela corretamente na 1 e 2 buscas errar da 3 até a 9 e acertar na 10 de novo rss

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.