13

この質問がWordPress固有のものなのか、それともmySQLに関連しているのかわかりません。データベースとのトランザクションが失敗した場合に何が返されるかを調べようとしています。次のシナリオでは、行を更新しています。値が変更されていない場合は、falseが返されます。変更が行われると、trueが返されます。トランザクションが失敗したかどうかはどうすればわかりますか?

$result = $wpdb->update($this->table_name, $dbfields, $where);
if($result == false)//do fail - this is not really a fail!
if($result == true)//do success

どんなポインタでもありがたいです。

4

1 に答える 1

42

を見てくださいwp-includes\wp-db.php。wpdbの更新関数のヘッダーコメントは次のように述べています。

 * @return int|false The number of rows updated, or false on error.

falseしたがって、 (失敗を示すブール値)と0(行が返されないことを示す整数)の違いを見つけたいと思います。

を使用して比較する==と、false0は等しい。したがって、演算子を使用して、ブール値と整数のどちら===を処理しているかを確認する必要があります。false0

だから、これらを試してみてください:

if ($result === false) // Fail -- the "===" operator compares type as well as value
if ($result === 0) // Success, but no rows were updated
if ($result > 0) // Success, and updates were done. $result is the number of affected rows.

===比較演算子の詳細については、PHPのマニュアルを参照してください。

于 2011-06-30T09:03:30.090 に答える