如何判断资源是否为空?
您可以使用mysql_num_rows()
来计算返回的行数,并检查从查询中接收到的数量。
$results = mysql_query("SELECT * FROM...");
if(mysql_num_rows($results) > 0) {
// Got some results
} else {
//no rows
}
但是请注意,如果查询失败,因为一个无效的SQL或其他一些原因,$results
会是假的,所以你可以这样做:
if(!$results) {
// Query was invalid
}
对于SELECT,SHOW,DESCRIBE,EXPLAIN和其他返回resultset的语句,mysql_query()返回成功的资源,或者错误返回FALSE。
要检查它是否是成功的,它可能是使用isset
或!empty
一个好主意:
$rs = mysql_query("select 1");
if (!empty($rs)){
//everything ran fine
}
else{
//something broken
}
这不是用户想要的。 –
如果没有记录返回,mysql_num_rows($resultHandle)
将返回0(零)
你可以使用mysql_num_rows()
。
如果mysql_query()
返回FALSE
这意味着查询操作存在操作问题,而不是没有返回行。
流程是这样的:
$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
}
这是唯一真正的返回数据(SELECT
,DESCRIBE
等)查询 - 只是执行操作(INSERT
,UPDATE
,DELETE
等)查询永远如果操作成功则返回TRUE
,如果失败则返回FALSE
。
从manual:
对于SELECT,SHOW,描述,解释等语句返回的结果集,请求mysql_query()成功返回的资源,或者在错误FALSE。
对于其他类型的SQL语句,INSERT,UPDATE,DELETE,DROP等,mysql_query()在成功时返回TRUE或在错误时返回FALSE。
不,mysql_query
将返回一个资源(不FALSE
)也是,如果你的SELECT
查询不返回任何行。要检查是否已返回行,你可以使用的功能bounch:
http://www.php.net/manual/en/function.mysql-num-rows.php
http://www.php.net/manual/en/function.mysql-fetch-assoc.php
...
美丽,谢谢。 –