mysql LIKE在三次匹配时只返回一行

时间:2009-08-26 02:22:35

标签: php mysql

当我在我的文件search.php中使用以下内容查询我的数据库时,它只返回它遇到的第一个结果。

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

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

showContents只是一个实用功能...

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

showContents返回了这个:

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

疯狂的是,当我在sqlbuddy中输入相同的查询时,它给了我:

business_id
3
5
6

我不知所措

3 个答案:

答案 0 :(得分:9)

mysql_fetch_array只提取一行。您希望多次使用它来构建包含整个结果集的数组:

$rec = array();

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

如果您只想要ID,请选择ID:

$rec = array();

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

答案 1 :(得分:2)

试试这个:

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

答案 2 :(得分:0)

那是因为mysql_fetch_array只从结果集中提取了一行。

通常你会这样使用它(来自the manual):

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