我一直遇到一个简单的select sql查询问题。 使用php PDO。
由于某种原因,rowcount返回1但fetch和fetchall都返回false; 对我来说,这意味着执行失败或者查询没有返回任何行数为0的结果。据我所知,我的sql语法很好。
这是sql查询
SELECT * FROM CustomerAddress WHERE ".CustomerAddress::custAddressID." = :".CustomerAddress::custAddressID." LIMIT 1
这是代码。
try{
if($this->selectCustomerAddressStatement->execute(array(CustomerAddress::custAddressID => $addressID)))
{
if($this->selectCustomerAddressStatement->rowCount() == 1)
{
$this->selectCustomerAddressStatement->closeCursor();
if($temp = $this->selectCustomerAddressStatement->fetch())
{
$customerAddress = new CustomerAddress($temp);
if($customerAddress->getCustAddressID() == $addressID)
{
return $customerAddress;
}else{
throw new Exception("The Customer Address Retrieved was not what was Asked.");
}
}else{
throw new Exception("Failed to retrieve Result set.");
}
}else{
throw new Exception("Statement Returned To Many Results.");
}
}else{
throw new Exception("Failed to Execute Statement.");
}
}catch(Exception $e) {
$this->selectCustomerAddressStatement->closeCursor();
throw new Exception("Customers:: selectCustomerAddress - ".$e->getMessage());
}
答案 0 :(得分:2)
看起来问题是:
$this->selectCustomerAddressStatement->closeCursor();
..在行计数后调用。关闭游标可能会释放语句的结果,这就是为什么提取不返回任何内容的原因。完成提取数据后,将该调用移至末尾。