3

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

在 php.com 的手册中,它指出在将值绑定到准备好的查询之后执行()将在成功时返回 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();

由于 PDO 返回异常,在 try-catch 中?

4

1 回答 1

2

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

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

于 2012-09-19T03:29:03.760 回答