Chibuzo
Chibuzo

Reputation: 6117

How do I raise PDOException?

This code works fine, but I'll want to handle exception if any thing goes wrong, so I deliberately made a syntax error in the query but nothing happens. Below is the code

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!";
} 

Without the obvious syntax error, the code works fine but with the syntax error, nothing happens, all the code in the try block executes and the code in the catch block never executes.

I want to raise an exception, please how do I do it here, thanks for any help.

Upvotes: 6

Views: 9121

Answers (2)

marcelog
marcelog

Reputation: 7180

Be sure to set the attribute PDO::ATTR_ERRMODE to PDO::ERRMODE_EXCEPTION, as soon as you init your pdo object:

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

After that, any failed queries will raise an exception

Upvotes: 9

Jeff Lambert
Jeff Lambert

Reputation: 24661

Exceptions are thrown. Syntax errors in code != Exceptions.

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

    }
?>

However, from the maual:

You should not throw a PDOException from your own code. See Exceptions for more information about Exceptions in PHP.

My advice is to throw either a general exception, or to write your own custom exception to handle your error.

Upvotes: 7

Related Questions