我有一个简短的问题,我希望能有一个快速而明确的答案。
在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返回异常?
答案 0 :(得分:1)
是的,你是对的。 $stmt->execute()
仅在无法执行查询时返回false
。它不会返回false
空结果集。因此,您需要使用fetch()
检查结果,fetch()
返回false
以获取空结果集。
对于异常,只有在为方法execute()
等设置异常模式时,PDO才会抛出异常。但无论是否设置了异常模式,new PDO(...)
都将抛出异常。