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

そのステートメントのorinは、PHPの論理演算子の1つであり、そのように使用すると、短絡評価のために最初のステートメントが失敗した場合に2番目のステートメントを実行します。割り当てを行っているため、そのステートメントに含めることはできませんreturn。また、2つのステートメントを実行すると、$result変数に適切な値を返すことができなくなります。

あなたは次のようなことをすることができます

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

しかし、それはあなたができる他の何よりもそれほど短くはありません。

@Kolinkが提供するような式を使用して、やりたいことを実行します。

于 2012-07-14T01:25:28.183 に答える