【问题标题】:PHP's PDO execute() vs. fetch()?PHP 的 PDO 执行()与 fetch()?
【发布时间】:2012-09-11 08:54:06
【问题描述】:

我有一个快速的问题,希望得到快速而明确的答案。

在 php.com 的手册中,它声明在将值绑定到准备好的查询后,execute() 将在成功时返回 true,在失败时返回 false。很简单。

我只是想确保我清楚这一点。 execute() 返回的值对应于直接错误。例如,如果数据库在成功连接后以某种方式出现故障,并且无法执行查询 - 或其他一些异常问题。

考虑一些代码:

    protected function territoryCheck($numberOut)
    {
        $this->numberOut = $numberOut;

        //Execute test
        $this->checkConnect();
        $stmt = $this->dbh->prepare("SELECT t_id FROM Territory WHERE t_id = :param1")
        $stmt->bindParam(':param1', $this->numberOut);
        $stmt->execute();

        //Determine value of test
        if($stmt == FALSE)
        {
            return FALSE;
        }   
    }

我很确定这不会按我的意愿运行。重点是根据参数是否有对应的值来查看数据库中是否存在t_id。在这种情况下,我需要使用 $stmt->fetch()。我这样说对吗?

感谢任何帮助。

编辑:按照同样的思路,将

//Execute test
        $this->checkConnect();
        $stmt = $this->dbh->prepare("SELECT t_id FROM Territory WHERE t_id = :param1")
        $stmt->bindParam(':param1', $this->numberOut);
        $stmt->execute();

在一个 try-catch 中,因为 PDO 返回异常?

【问题讨论】:

    标签: php pdo


    【解决方案1】:

    是的,你是对的。 $stmt->execute() 仅在执行查询失败时返回 false。它不会返回带有空结果集的false。所以你需要使用fetch()来检查结果,fetch()返回false对于空结果集。

    对于异常,PDO只有在你为execute()等方法设置异常模式时才会抛出异常。但是new PDO(...)无论是否设置异常模式都会抛出异常。

    【讨论】:

    • 哪个版本会使用新的 PDO?一个参考工作特别指出 PHP PDO 以异常的形式触发错误 - 它只是说明 PHP 5。
    猜你喜欢
    • 2014-11-05
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 2012-09-05
    • 2013-03-01
    • 2018-04-27
    • 2011-06-09
    相关资源
    最近更新 更多