对于以下代码,PHP 5.4和5.2.13之间是否存在一些显着差异?它适用于PHP 5.4(& mysql 5.1.62),不显示错误并执行查询。但是使用5.2.13(& mysql 5.1.3.0)它没有显示任何错误(它不会落入catch块)但是数据没有插入到数据库中
$db = new PDO(DHOST, DUSER, DPASS, array(PDO::ATTR_PERSISTENT => true, PDO::ATTR_EMULATE_PREPARES => true));
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
try {
$db->beginTransaction();
$db->exec($insertString);
$db->commit();
} catch (Exception $e) {
try {
$db->rollBack();
throwDbError($handler->errorInfo());
} catch (Exception $e2) {
...
}
}
如果我省略beginTransaction
和commit
的行,它也适用于PHP 5.2,但我需要这些事务。 mysql数据库中的两个表都使用InnoDB
答案 0 :(得分:1)
错误模式未设置为抛出异常。变化:
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
要:
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
两个PHP版本之间应该没有明显区别。
答案 1 :(得分:0)
您应该抓住PDOException
,而不是Exception
。