1

答えが見つからないように見える簡単な質問。

クエリをコミットする前に影響を受ける行数を確認する方法はありますか?

$conn->autocommit(FALSE);
$conn->begin_transaction();
$conn->query($insert_query);
if(affected_rows_of_query == 0)
 -> Nothing happened
if(affected_rows_of_query == 1)
 -> Only one record will be updated -> Success!
 $conn->commit();
else
 ->in any other case, rollback
 $conn->rollback();

これは、1 つのクライアント情報を更新するときに使用されます。クライアント情報を 1 つだけ更新する必要があることがわかっているため、クエリの影響を受ける行が多くないことを確認する方法はありますか?

4

1 に答える 1

0

私は恥ずかしいと思います.......

これを確認するためにスイッチを使用していました。また、affected_rows は NO ROWS に影響するため、後で確認すると 0 になりました。

によって解決:

$affected = $conn->affected_rows;
switch($affected)
{
  case 0: //nothing
  break;
  case 1: //OK
  echo "Successfully updated 1 client row"
  break;
  default: $conn->rollback();
  echo "Tried to update " . $affected . " rows. Query rolled back"
  break;
于 2013-10-19T17:25:20.193 に答える