3 回答
TA贡献1828条经验 获得超13个赞
看一下PDOStatement.fetchAll方法。您也可以fetch在迭代器模式中使用。
fetchAll来自PHP文档的的代码示例:
<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
/* Fetch all of the remaining rows in the result set */
print("Fetch all of the remaining rows in the result set:\n");
$result = $sth->fetchAll(\PDO::FETCH_ASSOC);
print_r($result);
结果:
Array
(
[0] => Array
(
[NAME] => pear
[COLOUR] => green
)
[1] => Array
(
[NAME] => watermelon
[COLOUR] => pink
)
)
TA贡献1851条经验 获得超4个赞
有三种方法来获取PDO语句返回的多行。
最简单的方法就是迭代PDOStatement本身:
$stmt = $pdo->prepare("SELECT * FROM auction WHERE name LIKE ?")
$stmt->execute(array("%$query%"));
// iterating over a statement
foreach($stmt as $row) {
echo $row['name'];
}
另一个是在熟悉的while语句中使用fetch()方法获取行:
$stmt = $pdo->prepare("SELECT * FROM auction WHERE name LIKE ?")
$stmt->execute(array("%$query%"));
// using while
while($row = $stmt->fetch()) {
echo $row['name'];
}
但是对于现代Web应用程序,我们应该将datbase迭代与输出分开,因此,最方便的方法是使用fetchAll()方法一次获取所有行:
$stmt = $pdo->prepare("SELECT * FROM auction WHERE name LIKE ?")
$stmt->execute(array("%$query%"));
// fetching rows into array
$data = $stmt->fetchAll();
然后将它们输出到模板中:
<ul>
<?php foreach($data as $row): ?>
<li><?=$row['name']?></li>
<?php endforeach ?>
</ul>
请注意,PDO支持许多复杂的提取模式,从而允许fetchAll()返回许多不同格式的数据。
TA贡献1827条经验 获得超9个赞
$st = $data->prepare("SELECT * FROM exampleWHERE example LIKE :search LIMIT 10");
添加回答
举报