mysql LIKE возвращает только одну строку, когда три совпадают - PullRequest
1 голос
/ 26 августа 2009

Когда я запрашиваю в своей базе данных следующее в моем файле 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 - это просто служебная функция ...

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

showContents вернул это:

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

Сумасшедшая вещь, когда я помещаю тот же запрос в sqlbuddy, он дает мне:

business_id
3
5
6

Я в растерянности

Ответы [ 3 ]

9 голосов
/ 26 августа 2009

mysql_fetch_array извлекает только одну строку. Вы хотите использовать его несколько раз для построения массива со всем набором результатов:

$rec = array();

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

Если вам нужны только идентификаторы, выберите идентификатор:

$rec = array();

while(($row = mysql_fetch_array($rs)) !== FALSE) {
    $rec[] = $row[0];
}
2 голосов
/ 26 августа 2009

Попробуйте это:

$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 голосов
/ 26 августа 2009

Это потому, что mysql_fetch_array выбирает только одну строку из набора результатов.

Обычно вы используете это так (из руководство ):

while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
    printf("ID: %s  Name: %s", $row[0], $row[1]);  
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...