我知道这可能是一个非常基本的问题,但我是php和数据库的新手,我正在试图找出一个while循环运行的条件,直到所有(也很高兴知道怎么做它来自固定数量的数据来自数据库。
$stmt = $db->prepare("SELECT * FROM icecreams");
$stmt -> execute();
$row = $stmt -> fetchAll(PDO::FETCH_ASSOC);
所以现在我需要弄清楚我需要的条件是什么,逻辑是
while (there is data to fetch) {
echo "<h1>$row['flavour']</h1>";
echo "...";
}
答案 0 :(得分:3)
fetchAll()
会返回包含所有结果集行的数组,而fetch()
会从结果集返回单行。< / p>
fetchAll()
用法:
$array = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($array as $row) {
# code...
}
fetch()
用法:
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
# code...
}
如果您打算使用它来打印HTML,第二个选项似乎更好。对于小型记录集,性能差异并不重要,但如果您正在处理大量记录,那么fetchAll()
可能会慢一点,因为它会尝试将整个数据映射到单个数组中一次。
答案 1 :(得分:1)
$stmt = $db->prepare("SELECT * FROM properties");
$stmt -> execute();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
//$row['column_name']
}
答案 2 :(得分:0)
fetchAll
确实以关联数组的形式获取所有内容(如标记FETCH_ASSOC
所示)。它会自动执行,您不必担心它。
答案 3 :(得分:0)
如果你这样做,你会发现你已经拥有了一个数组中的所有数据:
$row = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo '<pre>'.print_r($row, true).'</pre>';
所以现在你可以简单地循环访问数据的项目:
foreach($row as $k=>$v)
{
echo $k.'<br>'; // this will show you what row # you are on, sometimes useful :)
echo $v['title'].'<br>';
// etc....
}