在commit()之前检查受影响的行

时间:2013-10-19 17:17:04

标签: php transactions mysqli rollback

我似乎无法找到答案的快速提问。

在提交查询之前,有没有办法检查会影响多少行?

$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 个答案:

答案 0 :(得分: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;