处理故障的常用方法是:

$result = mysql_query("SELECT * FROM table1") or myFailureFunction();

结果是当查询失败时,会调用myFailureFunction()

是否有以下代码不完全相同的情况?
$result = mysql_query("SELECT * FROM table1");
if(!$result)
{
    myFailureFunction();
}

笔记:
  • 我已经测试了连接失败,SQL语法失败和空结果,它似乎适用于所有这些。我想知道在任何情况下都行不通。
  • 我知道有很多更好的方法来处理失败。
  • 有一个问题可以解决or的 bool(boolean) 性质。我想知道的是,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/

    10-11 22:23
    查看更多