2009-08-26 7 views
1

Lorsque j'interroge ma base de données avec les éléments suivants dans mon fichier, search.php, elle renvoie uniquement le premier résultat rencontré.mysql LIKE renvoyant une seule ligne lorsque trois correspondent

$qry = "SELECT business_id FROM business WHERE zip like '%91326%'"; 

$rs = mysql_query($qry); 
$rec = mysql_fetch_array($rs); 
echo $session->showContents($rec); 

showContents est juste une fonction utilitaire ...

function showContents($array) 
{ 
     echo "<pre>"; 
     print_r($array); 
     echo "</pre>"; 
} 

showContents retourné ceci:

Array 
(
    [0] => 3 
    [business_id] => 3 
) 

Ce qui est fou est, quand je mets la même requête dans SQL Buddy il me donne :

business_id 
3 
5 
6 

Je suis à un perte

Répondre

9

mysql_fetch_array ne récupère qu'une seule ligne. Vous souhaitez utiliser plusieurs fois pour construire un tableau avec l'ensemble des résultats:

$rec = array(); 

while(($row = mysql_fetch_array($rs)) !== FALSE) { 
    $rec[] = $row; 
} 

Si vous voulez juste de l'ID que vous souhaitez sélectionner l'ID:

$rec = array(); 

while(($row = mysql_fetch_array($rs)) !== FALSE) { 
    $rec[] = $row[0]; 
} 
2

Essayez ceci:

$qry = "SELECT business_id FROM business WHERE zip like '%91326%'"; 
$rs = mysql_query($qry); 
while ($rec = mysql_fetch_array($rs)) { 
    echo $session->showContents($rec); 
} 
0

En effet, mysql_fetch_array extrait une seule ligne de l'ensemble de résultats.

En général, vous l'utiliser comme ceci (de the manual):

while ($row = mysql_fetch_array($result, MYSQL_NUM)) { 
    printf("ID: %s Name: %s", $row[0], $row[1]); 
} 
Questions connexes