MySQL pdo选择带有限制的单列但返回一行

时间:2018-04-13 16:35:32

标签: mysql pdo

我试图从我的表中获取最后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没有任何意义,但为什么只返回一行?

2 个答案:

答案 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'];
  }

结果集中只有一列。我们似乎对fetchfetchAll感到困惑。

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'];
     }
  }