PHP mysql error_log并立即返回一个值

时间:2012-07-14 01:14:51

标签: php mysql error-handling

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

通常我只使用这个结构:

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

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

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

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

有什么建议吗?感谢。

2 个答案:

答案 0 :(得分:5)

试试这个:

if(!($result = mysql_query($sql))) {
    error_log(...);
    return -1;
}

答案 1 :(得分:1)

该语句中的or是PHP的logical operators之一,如果第一个语句因short circuit evaluation而失败,则会执行第二个语句。您将无法在该语句中return因为您正在执行赋值,并且如果执行两个语句,您将无法向$result变量返回正确的值。

您可以执行类似

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

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

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