所以我想做一个mysql_query - 我想告诉一个资源是否为null(也就是说,无法提取任何值)。如果没有值,查询是否会返回false?我是否正确阅读文件?
答案 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
}
仅适用于返回数据的查询(SELECT
,DESCRIBE
等) - 仅执行操作的查询(INSERT
,UPDATE
,{{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)
对于SELECT,SHOW,DESCRIBE,EXPLAIN和其他返回结果集的语句,mysql_query()会在成功时返回资源,或者在出错时返回FALSE。
要检查它是否成功,最好使用isset
或!empty
:
$rs = mysql_query("select 1");
if (!empty($rs)){
//everything ran fine
}
else{
//something broken
}