如何判断资源是否为空?

时间:2012-01-19 13:34:41

标签: php mysql

所以我想做一个mysql_query - 我想告诉一个资源是否为null(也就是说,无法提取任何值)。如果没有值,查询是否会返回false?我是否正确阅读文件?

5 个答案:

答案 0 :(得分:5)

您可以使用mysql_num_rows()计算返回的行数,并检查从查询中收到的行数。

$results = mysql_query("SELECT * FROM...");
if(mysql_num_rows($results) > 0 ) {
    // Got some results
} else {
    //no rows
}

但请注意,如果查询因SQL无效或其他原因而失败,$results将为false,您可以这样做:

if(!$results) {
    // Query was invalid
}

答案 1 :(得分:3)

您可以使用mysql_num_rows()

如果mysql_query()返回FALSE,则表示查询操作存在actaul问题,而不是没有返回任何行。

流程如下:

$query = "SELECT * FROM wherever";
if (!$result = mysql_query($query)) {
  // mysql_error() gives a human readable string that explains what went wrong
  // You should **never** show it in a production environment!
  die('MySQL Error: '.mysql_error());
}

if (!mysql_num_rows($result)) {
  // There were no results
} else {
  // There were some results
}

仅适用于返回数据的查询(SELECTDESCRIBE等) - 仅执行操作的查询(INSERTUPDATE,{{1}如果操作成功,将始终返回DELETE,如果操作失败,则返回TRUE

来自manual

  

对于SELECT,SHOW,DESCRIBE,EXPLAIN和其他返回结果集的语句,mysql_query()会在成功时返回资源,或者在出错时返回FALSE。

     

对于其他类型的SQL语句,INSERT,UPDATE,DELETE,DROP等,mysql_query()成功时返回TRUE,错误时返回FALSE。

答案 2 :(得分:0)

如果没有要返回的记录,mysql_num_rows($resultHandle)将返回0(零)

答案 3 :(得分:0)

不,如果您的mysql_query查询未返回任何行,FALSE也将返回资源(不是SELECT)。要检查是否没有返回任何行,您可以使用一系列函数:

  

http://www.php.net/manual/en/function.mysql-num-rows.php
  http://www.php.net/manual/en/function.mysql-fetch-assoc.php
  ...

答案 4 :(得分:-2)

Manual

  

对于SELECT,SHOW,DESCRIBE,EXPLAIN和其他返回结果集的语句,mysql_query()会在成功时返回资源,或者在出错时返回FALSE。

要检查它是否成功,最好使用isset!empty

$rs = mysql_query("select 1");
if (!empty($rs)){
    //everything ran fine
}
else{
    //something broken
}