Как проверить, если результаты на while ($ row = mysql_fetch_array в PHP - PullRequest
5 голосов
/ 21 декабря 2009

Я пытаюсь понять, как с этим справиться, если результаты не возвращаются, как бы я это закодировал?

while ($ row = mysql_fetch_array ($ Result))

Так как если есть результаты: распечатайте их

остальное: показать ссылку

Ответы [ 6 ]

13 голосов
/ 21 декабря 2009

http://ca3.php.net/manual/en/function.mysql-num-rows.php

if(mysql_num_rows($result) > 0) {
   while($row = mysql_fetch_array($result)) { ... }
} else {
  // show link
}
6 голосов
/ 21 декабря 2009

Вы можете использовать mysql_num_rows(), чтобы сообщить, сколько результатов найдено. Используя это с простым if-statement, вы можете определить, какое действие предпринять.

if (mysql_num_rows($result) > 0) {
  // do while loop
} else {
  // show link
}
2 голосов
/ 21 декабря 2009

Другие предлагают использовать mysql_num_rows(), но вы должны знать, что эта функция работает, только если вы используете буферизованный запрос . Если вы делаете запрос, используя mysql_unbuffered_query(), количество строк в результате будет недоступно.

Я бы использовал простую переменную-флаг:

$found_row = false;

while ($row = mysql_fetch_array($result)) {
  $found_row = true;
  . . .
}

if ($found_row == false) {
  // show link
}

Может показаться излишним многократно устанавливать $found_row в true, но присвоение литерального значения переменной должно быть незначительным расходом на любом языке. Конечно, он небольшой по сравнению с извлечением и обработкой результата SQL-запроса.

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

Используйте еще более короткий синтаксис без незначительных mysql_num_rows, чтобы сэкономить время процессора:

if($result) {
   // return db results
} else {
   // no result
}
0 голосов
/ 21 декабря 2009

Это можно сделать без mysql_num_rows () или дополнительной переменной (flag)

if ( false===($row=mysql_fetch_array($result, MYSQL_ASSOC)) ) {
  echo 'no rows in result set';
}
else {
  do {
    echo $row['X'];
  } while ( false===($row=mysql_fetch_array($result, MYSQL_ASSOC)) );
}

, но дублирует фактическую команду извлечения (одну в операторе if и одну в предложении while).

0 голосов
/ 21 декабря 2009

Я бы понял это:

if (!($row = mysql_fetch_array($descResult)))
     {
     echo "<tr><td>Add Link</td></tr>";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...