Как я могу показать сообщение, если в MySQL не было выделено ни одной строки? - PullRequest
3 голосов
/ 09 августа 2009

Мой код выглядит так:

$result = mysql_query("SELECT * FROM `picdb` WHERE `picid` = '$picid' ") or trigger_error(mysql_error()); 
while($row = mysql_fetch_array($result)){ 
foreach($row AS $key => $value) { $row[$key] = stripslashes($value); } 

Проблема в том, что когда нет строки для выбора, ничего не происходит, мой массив $ row пуст.

Как я могу получить это сообщение "строка не найдена", если ни одна строка не соответствует выбору?

Ответы [ 5 ]

17 голосов
/ 09 августа 2009

1001 * попробовать *

if (mysql_num_rows($result) == 0) {
  // Show message
} else {
  // do your while stuff here
}
8 голосов
/ 09 августа 2009

Используйте mysql_num_rows(), чтобы определить количество строк в вашем результате.

$result = mysql_query("SELECT * FROM `picdb` WHERE `picid` = '$picid' ") or trigger_error(mysql_error()); 

if(mysql_num_rows($result) == 0) {
  echo "No row found!"
} else {
  while($row = mysql_fetch_array($result)) { 
    foreach($row AS $key => $value) {
      $row[$key] = stripslashes($value);
    }
  }
}
2 голосов
/ 09 августа 2009

mysql_num_rows () работает только для буферизованных запросов. Если у вас потенциально большой / огромный набор результатов, вы можете переключиться на небуферизованные запросы , и num_rows больше не является опцией.
Вы можете проверить возвращаемое значение первого вызова mysql_fetch_array (). Если это ЛОЖЬ, не было подходящих записей.

<?php
$result = mysql_query("SELECT * FROM `picdb` WHERE `picid` = '$picid' ") or trigger_error(mysql_error()); 

$row = mysql_fetch_array($result, MYSQL_ASSOC);
if ( !$row ) {
  echo '0 rows';
}
else {
  do {
    echo htmlspecialchars($row['x']), "<br />\n";
  } while($row=mysql_fetch_array($result, MYSQL_ASSOC));
}

Недостатком этого метода do {} while () является то, что код $ row = mysql_fetch ... был продублирован. Но это всего лишь маленький дублет.

2 голосов
/ 09 августа 2009
if (mysql_num_rows($result) == 0) {
    echo "Result is empty!";
}

Вы должны были прочитать описание mysql_query, оно дает вам ответ: http://php.net/mysql_query

0 голосов
/ 20 мая 2019

Мне кажется, что этот метод никогда не сработает.

if(!$result = mysqli_query($con,"SELECT * FROM `picdb` WHERE `picid` = '$picid' ")){
// Enter you error message here.
} else {
// Do all your magic.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...