MySQL retorna apenas uma linha

Eu tenho esse código PHP simples:

$query = mysql_query("SELECT `title`, `url_title` FROM `fastsearch` WHERE `tags` LIKE '%$q%' LIMIT 5"); $query2 = mysql_fetch_assoc($quer); print_r($query2); 

Apenas retorna isso:

 Array ( [title] => Kill Bill Vol 1. [url_title] => kill_bill_vol_1 ) 

Eu tenho 3500 + linhas na tabela, e executar o SQL no PhpMyAdmin funciona perfeitamente.

 $query = mysql_query("SELECT `title`, `url_title` FROM `fastsearch` WHERE `tags` LIKE '%$q%' LIMIT 5"); while ($row = mysql_fetch_assoc($query)) { print_r($row); } 
  • Você escreveu incorretamente $query no seu exemplo
  • mysql_fetch_assoc() retornará uma linha cada vez que é chamado, e FALSE quando fora de linhas. Use isso em sua vantagem, atribuindo-lhe uma variável na condição. Dentro do loop while() , $row será a linha atual.

Certo, você não está obtendo os resultados corretamente.

mysql_fetch_assoc() retorna apenas uma linha por vez. Use um loop para ler todas as linhas.

 $query = mysql_query("SELECT `title`, `url_title` FROM `fastsearch` WHERE `tags` LIKE '%$q%' LIMIT 5"); $resultSet = array(); while ($cRecord = mysql_fetch_assoc($query)) { $resultSet[] = $cRecord; } 

Como a documentação http://php.net/manual/en/function.mysql-fetch-assoc.php afirma:

 mysql_fetch_assoc — Fetch a result row as an associative array 

Então, se você deseja iterar sobre o resultado, você deve usar um loop, por exemplo:

 while ($row = mysql_fetch_assoc($result)) { echo $row["title"]; echo $row["url_title"]; } 

o método fetch_assoc () retorna uma linha, você precisa fazer um loop com ela

mysqli_fetch_assoc() é uma function que é buscar vários registros e exibir através de print_r ().

 $query = "SELECT `title`, `url_title` FROM `fastsearch` WHERE `tags` LIKE '%$q%' LIMIT 5"; $result = mysqli_query($conn,$query); while(null ! == ($query = mysqli_fetch_assoc($result))){ print_r($query); }