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との行を省略した場合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);

2 つの PHP バージョンの間に識別可能な違いはないはずです。

于 2012-05-14T10:41:59.457 に答える
0

PDOExceptionではなく、をキャッチする必要がありExceptionます。

于 2012-05-14T10:34:12.427 に答える