尝试/捕获不使用此PDO查询

时间:2011-07-13 23:38:44

标签: php mysql pdo

我有一个脚本,我通过用PDO预处理语句和查询替换内联mysql查询来更新。当查询正确或返回结果时,它工作正常。但是,当查询语句中出现错误时,try / catch die不起作用。例如,我使用了这个测试代码:

$query = $this->dbh->prepare('SELEC menu_item, hyperlink, admin FROM top_menu;');
    try
    {
            $query->execute();
        $row = $query->fetch(PDO::FETCH_ASSOC));
                    die("success");

    }

    catch(Exception $e)
    {
        die("fail");        
    }

查询错误(“SELEC”而不是“SELECT”),因此脚本的流程应该进入异常/错误括号,但它不会;我一直在“成功”。我尝试了catch(PDOException $ e)而不是catch(Exception $ e),结果完全相同。

我做错了什么,我该如何解决这个问题?感谢。

2 个答案:

答案 0 :(得分:1)

类似的问题已被回答here,除非你告诉它,否则PDO不会抛出异常。你跑了吗?

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

在PDO对象上。

答案 1 :(得分:-1)

对于PDO的fetch()失败,返回FALSE。没有例外。

请参阅:http://php.net/manual/en/pdostatement.fetch.php