我正在寻找最好的方法来检查并查看查询中是否返回了任何结果。我觉得我写了很多这部分代码,有时会出错,有时不会。
例如,在将新用户名插入数据库之前,我运行此查询来检查用户名是否存在。
$result = mysql_query("SELECT * FROM ...");
然后我想检查并查看是否返回了任何结果。下面是我的一种方法:
if (!$result) { PERFORM ACTION }
如果第一种方法不起作用,那么有时这会起作用:
if (mysql_num_rows($result)==0) { PERFORM ACTION }
后来有一天我甚至发现我可以这样做:
list($total) = mysql_fetch_row($result);
if ($total==0) { PERFORM ACTION }
做这件事最好的方法是什么?
发布于 2010-11-26 23:39:57
一种方法是检查mysql_num_rows
返回的内容。一个最小的完整示例如下:
if ($result = mysql_query($sql) && mysql_num_rows($result) > 0) {
// there are results in $result
} else {
// no results
}
但建议您检查mysql_query
的返回值,并在返回值为false
(这可能是由错误引起的)的情况下正确处理它;可能还需要调用mysql_error
并将错误记录在某个地方。
发布于 2013-06-07 06:14:22
每当我们进行查询以获取某些数据时,它都会以对象的形式返回。然后,我们大多数人都会将其转换为数组,以便轻松地遍历各行。在php中," empty ()“函数用于检查数组是否为空,即该数组中是否没有数据。因此我们可以检查查询返回的数组表示是否为空,如下所示
if(!empty($result)){
//DO STUFF
}
发布于 2013-07-26 22:13:15
比在处理前测试结果变量的类型更符合逻辑的是什么?它是'boolean‘或'resource’类型。当您在mysqli_num_rows中使用参数的布尔值时,将会生成警告,因为该函数需要一个资源。
$result = mysqli_query($dbs, $sql);
if(gettype($result)=='boolean'){ // test for boolean
if($result){ // returned TRUE, e.g. in case of a DELETE sql
echo "SQL succeeded";
} else { // returned FALSE
echo "Error: " . mysqli_error($dbs);
}
} else { // must be a resource
if(mysqli_num_rows($result)){
// process the data
}
mysqli_free_result($result);
}
https://stackoverflow.com/questions/4286586
复制相似问题