Почему циклы, использующие mysql_fetch_array, подвержены влиянию предыдущего mysql_fetch_array? - PullRequest
1 голос
/ 31 декабря 2011

Я выполнил запрос и записал результаты в переменную с именем $raw_results;

У меня тогда есть следующее:

<code>$record_set = mysql_fetch_array($raw_results);

echo "<pre>";
print_r($record_set);
echo "
"; echo"";

И прямо под ним у меня есть:

<code>while ($record_set = mysql_fetch_array($raw_results))
{
echo "<pre>";
print_r($record_set);
echo "
";}

Я удивлен (и смущен), что while loop начинается с record #2 in the array вместо record #1.

Если я уберу блок над циклом, тоцикл отображает record #1, как я и ожидал.

Почему блок находится над ним в цикле?

Заранее спасибо, что нашли время.Приветствия.

Ответы [ 2 ]

2 голосов
/ 31 декабря 2011

Каждый вызов mysql_fetch_array() продвигает указатель записи в ресурсе результата $raw_results. Таким образом, первоначальный вызов уже продвинул его до второй записи. Следующий вызов, будь то в цикле или отдельно, вернет следующую (вторую) строку.

Чтобы перемотать его обратно к первой записи, вы можете использовать mysql_data_seek():

mysql_data_seek($raw_results, 0);
0 голосов
/ 31 декабря 2011

Это происходит потому, что при первом использовании mysql_fetch_array возвращается первая строка и перемещается указатель на следующую строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...