【问题标题】:Try/Catch not working with this PDO queryTry/Catch 不适用于此 PDO 查询
【发布时间】:2011-07-13 23:38:44
【问题描述】:

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

$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) ,结果完全相同。

我做错了什么,我该如何解决?谢谢。

【问题讨论】:

    标签: php mysql pdo


    【解决方案1】:

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

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

    在 PDO 对象上。

    【讨论】:

      【解决方案2】:

      对于 PDO 的 fetch() 失败返回 FALSE。不抛出异常。

      见:http://php.net/manual/en/pdostatement.fetch.php

      【讨论】:

        猜你喜欢
        • 2023-01-16
        • 2014-09-01
        • 2012-05-14
        • 2017-09-22
        • 1970-01-01
        • 1970-01-01
        • 2012-10-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多