2

我正在编写一个查询我的数据库的函数,如果 mysql 查询由于某种原因出错,我希望我的函数返回一个指示查询失败的值(在本例中为 -1),而不是从整体中消失脚本。

通常我只使用这个结构:

$result = mysql_query($sql) or die( [some error information] );

但在这种情况下,我不想死,但我确实需要跳出函数并有一些方法告诉调用函数出了问题,同时仍然能够手动检查日志的来源错误。有没有办法做到这一点?半伪代码看起来像:

$result = mysql_query($sql) or {
    error_log( [some error information] );
    return -1;
}

但是我已经尝试了几种变体,并且(正如人们所预料的那样)它们不起作用。

有什么建议么?谢谢。

4

2 回答 2

5

尝试这个:

if(!($result = mysql_query($sql))) {
    error_log(...);
    return -1;
}
于 2012-07-14T01:16:37.327 回答
1

in该or语句是 PHP 的逻辑运算符之一,当这样使用时,如果第一个语句由于短路评估而失败,它将执行第二个语句。您将无法使用return该语句,因为您正在执行赋值,并且如果您执行两个语句,您将无法为$result变量返回正确的值。

你可以做类似的事情

$result = false or (error_log('message') && ($result = -1));
if ($result === -1) return $result;

但这并不比你能做的任何事情都要短。

使用类似@Kolink 提供的表达式来做你想做的事。

于 2012-07-14T01:25:28.183 回答