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();

这将在更新一个客户信息时使用。因为我知道只有一个客户信息应该更新,有没有办法检查查询不会影响多少行?

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 回答