Самый простой способ получить текущее местоположение указателя данных для цикла mysql_fetch_assoc? - PullRequest
0 голосов
/ 13 октября 2009

Учитывая $ результат запроса SELECT, который возвратил 20 строк, каков самый простой способ выполнить то, что предлагает комментарий в цикле?

while ($row = mysql_fetch_assoc($result))
{
    // echo "success" when i get to the 9th row
}

Ответы [ 4 ]

1 голос
/ 14 октября 2009

Вы можете использовать mysql_data_seek(), чтобы проверить, существует ли 9-я строка:

if(mysql_data_seek($result, 8) !== false) {
    // success, internal pointer is now at 9
    // still need to call mysql_fetch to get the row
}

но вы не можете получить внутренний указатель, если не считать себя. Использование цикла for делает его немного более аккуратным:

for($i = 0; $row = mysql_fetch_assoc($result); $i++) {
    if($i == 8) // success
}
1 голос
/ 13 октября 2009
$i=0;

while ($row = mysql_fetch_assoc($result))
{
    ++$i;
    if($i==9)
        echo "success";
}
0 голосов
/ 14 октября 2009

методы, подробно описанные в других ответах, являются действительными способами сделать это.

Если вы действительно хотите переместить внутренний указатель на 9-й результат без необходимости проходить через цикл, то это то, что вы можете искать:

if ( mysql_data_seek ($result,9) ) echo "success";
0 голосов
/ 13 октября 2009
$i = 0; // Or 1 if need be
while ($row = mysql_fetch_assoc($result))
{
    // echo "success" when i get to the 9th row
   if($i == 9) {
      echo "success";
   }
   $i++;
}

или

while ($row = mysql_fetch_array($result, MYSQL_NUM))
{
  if($row[8] != '') {
   echo "success"; 
  }
}

или

while ($row = mysql_fetch_assoc($result))
{
  if($row['column_name_of_the_ninth_field'] != '') {
   echo "success"; 
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...