PHP的PDO执行()与fetch()?

时间:2012-09-19 03:17:00

标签: php pdo

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

在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返回异常?

1 个答案:

答案 0 :(得分:1)

是的,你是对的。 $stmt->execute()仅在无法执行查询时返回false。它不会返回false空结果集。因此,您需要使用fetch()检查结果,fetch()返回false以获取空结果集。

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