如何在mysql,php中没有选择任何行时显示消息?

时间:2009-08-09 06:40:05

标签: php mysql

我的代码如下所示:

$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数组为空。

当没有行与select匹配时,如何使用此消息显示“no row found”?

5 个答案:

答案 0 :(得分:17)

if (mysql_num_rows($result) == 0) {
  // Show message
} else {
  // do your while stuff here
}

答案 1 :(得分:8)

使用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 :(得分:2)

if (mysql_num_rows($result) == 0) {
    echo "Result is empty!";
}

您应该阅读mysql_query的说明,它会给您答案:http://php.net/mysql_query

答案 3 :(得分:2)

mysql_num_rows()仅适用于缓冲查询。如果您可能有大/大的结果集,则可能会切换到unbuffered queries并且num_rows不再是一个选项。
您可以测试第一次调用mysql_fetch_array()的返回值。如果它是FALSE则没有匹配的记录。

<?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 ...代码已被复制。但它只是一个小的双峰。

答案 4 :(得分:0)

这种方法对我来说似乎永远不会失败。

if(!$result = mysqli_query($con,"SELECT * FROM `picdb` WHERE `picid` = '$picid' ")){
// Enter you error message here.
} else {
// Do all your magic.
}