2009-08-26 9 views
1

Wenn ich meine Datenbank mit dem folgenden in meiner Datei, search.php abfragen, gibt es nur das erste Ergebnis zurück, das es kommt.mysql LIKE nur eine Zeile zurückgeben, wenn drei übereinstimmen

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

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

showContents ist nur eine Hilfsfunktion ...

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

showContents diese zurückgegeben:

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

Die verrückte Sache ist, wenn ich die gleiche Abfrage in sqlbuddy setzen es gibt mir :

business_id 
3 
5 
6 

Ich bin bei a Verlust

Antwort

9

mysql_fetch_array holt nur eine einzelne Zeile. Sie wollen es mehrmals verwenden, um ein Array mit der gesamten Ergebnismenge zu bauen:

dieses
$rec = array(); 

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

Versuchen:

$rec = array(); 

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

Wenn Sie nur die Sie die ID auswählen möchten die ID wollen

$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

Das liegt daran, dass mysql_fetch_array nur eine einzelne Zeile aus der Ergebnismenge abruft.

Normalerweise verwenden Sie es wie folgt (von the manual):

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