使用 PDO 自动提交
Autocommit with PDO
我的事务回滚不起作用。
如何使用 PDO(我有 InnoDB 5.7.18)在 php 脚本中将自动提交设置为 false(或 0)?
这是我的代码:
global $bdd; //defined with PDO
try {
$bdd->beginTransaction();
/* my requests */
$bdd->commit();
} catch (Exception $e) {
$bdd->rollBack();
return $e->getMessage();
}
return true;
}
尝试设置以下属性:
$bdd->setAttribute(PDO::ATTR_AUTOCOMMIT,0);
$db = new PDO('mysql:dbname=employee');
$db->setAttribute(PDO::ATTR_AUTOCOMMIT,0);
var_dump($db->query('SELECT @@autocommit')->fetchAll());
我自己解决了我的问题:我的一些表在 MyISAM 中(而大部分在 InnoDB 中 -> 我使用的是旧数据库系统...);所以回滚对这些表不起作用。一旦我将它们更改为 InnoDB,它就起作用了。
感谢大家的帮助!
我的事务回滚不起作用。 如何使用 PDO(我有 InnoDB 5.7.18)在 php 脚本中将自动提交设置为 false(或 0)?
这是我的代码:
global $bdd; //defined with PDO
try {
$bdd->beginTransaction();
/* my requests */
$bdd->commit();
} catch (Exception $e) {
$bdd->rollBack();
return $e->getMessage();
}
return true;
}
尝试设置以下属性:
$bdd->setAttribute(PDO::ATTR_AUTOCOMMIT,0);
$db = new PDO('mysql:dbname=employee');
$db->setAttribute(PDO::ATTR_AUTOCOMMIT,0);
var_dump($db->query('SELECT @@autocommit')->fetchAll());
我自己解决了我的问题:我的一些表在 MyISAM 中(而大部分在 InnoDB 中 -> 我使用的是旧数据库系统...);所以回滚对这些表不起作用。一旦我将它们更改为 InnoDB,它就起作用了。 感谢大家的帮助!