处理失败的常见方法是:
$result = mysql_query("SELECT * FROM table1") or myFailureFunction();
结果是当查询失败时,myFailureFunction()
被调用。
以下代码是否存在不完全相同的情况?
$result = mysql_query("SELECT * FROM table1");
if(!$result)
{
myFailureFunction();
}
注释:
- 我已经测试了连接失败、SQL 语法失败和空结果,它似乎对所有这些都有效。我想知道是否有任何情况它不起作用。
- 我知道有更好的方法来处理失败。
- 有一个问题涉及
or
的 bool 性质。我想知道的是,or
是对返回的结果进行操作还是其他操作?问题:PHP: 'or' statement on instruction fail: how to throw a new exception?
最佳答案
就您而言,它们完全相同,因为 short circuit evaluation ,但是如果返回 null 或其他错误值,则会产生影响。注:
function f(){return false;}
function w(){return "w";}
$a = f() or w();
echo isset($a);
// 1 (true). $a === FALSE!
现在,请注意缺少返回会发生什么:
function f(){}
function w(){return "w";}
$a = f() or w();
echo isset($a);
// nothing (false)
关于php - 'or' 是否被视为对语句返回的 bool 检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7244915/