我正在使用 PHP 版本 5.4.4,以及使用 InnoDB 的 MySQL 数据库。我已经使用 PDO 有一段时间没有使用事务,并且一切都运行得完美无缺。然后,我决定尝试实现事务,但我不断收到内部服务器错误 500。以下代码对我有用(不包含事务)。
try {
$DB = new PDO('mysql:host=localhost;dbname=database', 'root', 'root');
$DB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh = $DB->prepare("SELECT * FROM user WHERE username = :test");
$dbh->bindValue(':test', $test, PDO::PARAM_STR);
$dbh->execute();
}
catch(Exception $e) {
$dbh->rollback();
echo "an error has occured";
}
然后我尝试使用带有以下代码的事务(不起作用)。
try {
$DB = new PDO('mysql:host=localhost;dbname=database', 'root', 'root');
$DB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh = $DB->beginTransaction();
$dbh->prepare("SELECT * FROM user WHERE username = :test");
$dbh->bindValue(':test', $test, PDO::PARAM_STR);
$dbh->execute();
$dbh->commit();
}
catch(Exception $e) {
$dbh->rollback();
echo "an error has occured";
}
当我运行之前的代码时,我得到一个内部服务器错误 500。
任何帮助将不胜感激!谢谢!