Mysql_fetch_array сбрасывает запрос var? - PullRequest
0 голосов
/ 23 марта 2012

Например, у меня есть запрос MySQL, который получает некоторые данные.Затем запускает другой запрос на основе некоторых полученных данных.

Если я просто верну первый запрос, в моем случае $qOne.Все отлично работает.

НО, после использования моего цикла while while ($row = mysql_fetch_array($qOne)) Затем он возвращается как пустой массив.(но второй запрос, который я возвращаю, работает)

Я пытался посмотреть, смогу ли я "сохранить" первый запрос в другой переменной, с которой у меня не получилось вот так $savedResult = $qOne, тогда я просто вернул бы $saveResult, но это не сработало.

Кто-нибудь знает, как я могу получить свою функцию ниже, чтобы вернуть оба результата?Спасибо!

function getFoods($sort, $start, $limit) {

        $qOne = mysql_query("SELECT a.id, a.name, a.type, AVG(b.r) AS fra, COUNT(b.id) as tvotes FROM `foods` a LEFT JOIN `foods_ratings` b ON a.id = b.id GROUP BY a.id ORDER BY fra DESC, tvotes DESC LIMIT $start, $limit;");

        $i = 0;
        $qry = "";
        while ($row = mysql_fetch_array($qOne)) {
            $fid = $row['id'];
            if ($i > 0)
                $qry .= " UNION ";
            $i++;
            $qry .= "SELECT fid, ing, amount FROM foods_ing WHERE fid='$fid'";
        }

        $qTwo = mysql_query($qry);

        return array($qOne, $qTwo);
    }

1 Ответ

1 голос
/ 23 марта 2012

Когда вы вернули два ресурса результатов запроса, помните, что вам нужно будет извлечь их, когда вы действительно захотите их использовать. (мы не видим код, в котором вы это реализуете).

Чтобы использовать $qOne после того, как вы уже прошли через него, вы должны перемотать его обратно на первую позицию. Это делается с mysql_data_seek()

mysql_data_seek($qOne, 0);
...