2

对于以下代码,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如果我用and省略这些行commit,它也适用于 PHP 5.2,但我需要事务。mysql 数据库中的两个表都使用 InnoDB

4

2 回答 2

1

错误模式未设置为抛出异常。改变:

$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);

到:

$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

两个 PHP 版本之间应该没有明显的区别。

于 2012-05-14T10:41:59.457 回答
0

你应该抓住PDOException,不是Exception

于 2012-05-14T10:34:12.427 回答