5

このコードは正常に機能しますが、何か問題が発生した場合は処理したいexceptionので、意図的に構文エラーを作成しましたqueryが、何も起こりません。以下はコードです

try {
    $sql = "INSERT INTO journals (topic, author, ) VALUES ('$topic', '$authors', ')";
    echo "1st";
    $lecturers_db->query($sql);
    echo "second";
} catch(PDOException $e) {
    echo $e->getMessage();
    echo $msg = "Error!";
} 

明らかな構文エラーがなければ、コードは正常に機能しますが、構文エラーが発生すると、何も起こりません。すべてのコードがtry block実行され、のコードは実行されcatch blockません。

私は育てたいです、exception私はここでそれをどのように行うのですか、助けてくれてありがとう。

4

2 に答える 2

8

pdoオブジェクトを初期化したらすぐに、属性PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTIONに設定してください。

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

その後、失敗したクエリは例外を発生させます

于 2012-06-15T12:39:12.493 に答える
7

例外がスローされます。コードの構文エラー!=例外。

<?php 
    try {
        $code = 12;
        throw new PDOException('Message', $code );
    } catch (PDOException $e) {

    }
?>

しかし、maualから:

独自のコードからPDOExceptionをスローしないでください。PHPの例外の詳細については、「例外」を参照してください。

私のアドバイスは、一般的な例外をスローするか、エラーを処理するために独自のカスタム例外を作成することです。

于 2012-06-15T12:37:31.777 に答える