【问题标题】:Check affected rows before commit()在 commit() 之前检查受影响的行
【发布时间】:2013-10-19 17:17:03
【问题描述】:

我似乎找不到答案的快速问题。

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

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

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

【问题讨论】:

  • 简单。只需下载并安装 Free Time Machine 客户端 PHP 库。

标签: php transactions mysqli rollback


【解决方案1】:

我很惭愧.......

我正在使用一个开关来检查这个。并且由于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-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多