检查PHP结果是否在PHP中返回的最佳方法?

tim*_*man 62 php mysql

我正在寻找检查查看是否在查询中返回任何结果的最佳方法.我觉得我经常写这部分代码,有时候会出错,有时我也不会.

例如,我运行此查询以检查在将新的用户名插入数据库之前是否存在用户名.

$result = mysql_query("SELECT * FROM ...");
Run Code Online (Sandbox Code Playgroud)

然后我想检查并查看是否返回了任何结果.这是我做的一种方式:

if (!$result) { PERFORM ACTION }
Run Code Online (Sandbox Code Playgroud)

如果第一种方法不起作用,那么有时会这样:

if (mysql_num_rows($result)==0) { PERFORM ACTION }
Run Code Online (Sandbox Code Playgroud)

然后我甚至看到我可以在前几天这样做:

list($total) = mysql_fetch_row($result);
if ($total==0) { PERFORM ACTION }
Run Code Online (Sandbox Code Playgroud)

做这个的最好方式是什么?

ben*_*e89 132

if (mysql_num_rows($result)==0) { PERFORM ACTION }
Run Code Online (Sandbox Code Playgroud)

这得到了我的投票.

OP假设查询没有返回任何错误,所以这应该是其中一种方式

  • Racertim询问如何检查行数 - 而不是SQL是否失败,所以这是一个合法的答案.为此投票. (6认同)
  • 如果$ result无效,mysql_num_rows将返回false http://php.net/manual/en/function.mysql-num-rows.php (6认同)
  • @ benhowdle89 - 如果sql失败,$ result不是一个有效的mysql结果资源,mysql_num_rows可以做什么? (5认同)
  • 是的,但几乎不值得投票!?它仍然是检查O/P问题的有效方法:我正在寻找检查查看是否在查询中返回任何结果的最佳方法. (3认同)

Sho*_*hoe 12

一种方法是检查mysql_num_rows返回的内容.一个最小的完整示例如下:

if ($result = mysql_query($sql) && mysql_num_rows($result) > 0) {
    // there are results in $result
} else {
    // no results
}
Run Code Online (Sandbox Code Playgroud)

但是建议你检查它的返回值mysql_query并在它的情况下正确处理它false(这可能是由错误引起的); 可能还会mysql_error在某处调用并记录错误.

  • [支持内容,但想提及这一点。] 次要风格 nit:我讨厌在 if 中看到“=”。太像“==”了。如果在 `if` 之前 * 进行赋值,则更易于阅读。(我在我的职业生涯中花了很多时间调试别人的代码......) (3认同)

Sha*_*tar 5

每当我们执行查询以获取一些数据时,它都会作为对象返回。然后,我们大多数人将其转换为数组,以便轻松地遍历各行。在PHP中,“ empty()”函数用于检查数组是否为空,即数组中是否没有数据。这样我们就可以检查返回的查询数组表示形式是否为空

if(!empty($result)){
           //DO STUFF
}
Run Code Online (Sandbox Code Playgroud)

  • 请对此进行详细说明。 (2认同)