使用PDO准备语句和遍历接口时如何指定fetch_style?
How do I specify the fetch_style when using a PDO prepared statement and the traversal interface?
我的pdo连接设置为return个标准对象,我可以使用遍历接口迭代结果如下:
$stmt=$this->pdo->prepare($sql);
$stmt->execute($arr);
foreach($stmt as $rs) {
//$rs is a stdObject since the pdo connection is set up to return stdObjects
}
根据 http://php.net/manual/en/pdo.query.php,我可以指定 fetch_style 并类似地迭代结果如下:
$stmt = $pdo->query($sql, PDO::FETCH_ASSOC);
foreach($stmt as $rs) {
//$rs is an array even though pdo connection is set up to return stdObject since I included `PDO::FETCH_ASSOC`
}
然而,我想要的是当我的 pdo 连接设置为 return 标准对象时使用准备好的语句,并使用遍历接口迭代结果和 return 数组:
$stmt=$this->pdo->prepare($sql);
$stmt->execute($arr);
foreach($stmt as $rs) {
// pdo connection is set up to return stdObject. What can be done to make $rs an array?
}
如何做到这一点?
请注意,类型转换为数组不是一个可接受的答案,因为首先不使用遍历接口会是更好的方法。
但是,说明不可能(如果为真)是可以接受的答案。
您的第一站应该始终是 PHP 手册 ~ PDOStatement::setFetchMode
$stmt=$this->pdo->prepare($sql);
$stmt->execute($arr);
$stmt->setFetchMode(PDO::FETCH_ASSOC);
foreach($stmt as $rs) {
// $rs is an array
}
这将为特定的 PDOStatement
实例设置 fetch-mode,不会对以后的查询产生任何影响。
我的pdo连接设置为return个标准对象,我可以使用遍历接口迭代结果如下:
$stmt=$this->pdo->prepare($sql);
$stmt->execute($arr);
foreach($stmt as $rs) {
//$rs is a stdObject since the pdo connection is set up to return stdObjects
}
根据 http://php.net/manual/en/pdo.query.php,我可以指定 fetch_style 并类似地迭代结果如下:
$stmt = $pdo->query($sql, PDO::FETCH_ASSOC);
foreach($stmt as $rs) {
//$rs is an array even though pdo connection is set up to return stdObject since I included `PDO::FETCH_ASSOC`
}
然而,我想要的是当我的 pdo 连接设置为 return 标准对象时使用准备好的语句,并使用遍历接口迭代结果和 return 数组:
$stmt=$this->pdo->prepare($sql);
$stmt->execute($arr);
foreach($stmt as $rs) {
// pdo connection is set up to return stdObject. What can be done to make $rs an array?
}
如何做到这一点?
请注意,类型转换为数组不是一个可接受的答案,因为首先不使用遍历接口会是更好的方法。
但是,说明不可能(如果为真)是可以接受的答案。
您的第一站应该始终是 PHP 手册 ~ PDOStatement::setFetchMode
$stmt=$this->pdo->prepare($sql);
$stmt->execute($arr);
$stmt->setFetchMode(PDO::FETCH_ASSOC);
foreach($stmt as $rs) {
// $rs is an array
}
这将为特定的 PDOStatement
实例设置 fetch-mode,不会对以后的查询产生任何影响。