我试图从我的表中获取最后3条记录+只有标题列,但我只得到一个结果。
$query = $connect->prepare("SELECT title FROM tutorials LIMIT 3");
$query->execute();
$result = $query->fetch(PDO::FETCH_ASSOC);
foreach($result as $key => $value) { echo $value; }
如果我使用fetchAll正在工作,但在我的情况下,我不需要所有列,只需要一个(标题)所以使用fetchall没有任何意义,但为什么只返回一行?
答案 0 :(得分:1)
http://php.net/manual/en/pdostatement.fetch.php说:
PDOStatement :: fetch - 从结果集中获取下一行
每次拨打fetch()
时,它只会提取一行。您需要在循环中调用它,直到它到达结果集的末尾,否则使用fetchAll()
。
听起来你在某种程度上混淆了“行”和“列”这两个术语。
答案 1 :(得分:1)
fetch
检索一行行,如果没有要提取的行,则返回FALSE。 (我们可以循环处理,fetch
每个"下一行",直到fetch
返回FALSE。
$query->execute();
while ( $row = $query->fetch(PDO::FETCH_ASSOC) ) {
echo $row['title'];
}
结果集中只有一列。我们似乎对fetch
和fetchAll
感到困惑。
http://php.net/manual/en/pdostatement.fetch.php
http://php.net/manual/en/pdostatement.fetchall.php
如果我们使用fetchAll
来检索所有行,我们会返回一个数组,数组中的每个元素都是结果集中的一行。
$query->execute();
if( $rs = $query->fetchAll(PDO::FETCH_ASSOC) ) {
foreach($rs as $row) {
echo $row['title'];
}
}