PDO语句不返回完整数组

时间:2016-04-04 14:36:37

标签: php arrays pdo

我无法弄清楚为什么我只返回数组中的1个条目,当表格总共有4个条目时。

我的PDO代码是:

$stmtkat = $this->db->prepare("SELECT * FROM kategorie");
$stmtkat->execute();
$katarray=$stmtkat->fetch(PDO::FETCH_ASSOC);
var_dump($katarray);

我得到的返回数组:

 array(2) { ["id"]=> string(1) "1" ["kategorie"]=> string(12) "Coaching" }

该表有4行,为什么我只获得数组的第一行? 我做错了什么?显然我是PDO的新手。

Ty你的时间。

2 个答案:

答案 0 :(得分:5)

您只获取查询生成的结果行之一

如果您使用gcc -std=c99 -Wextra a.c -lavcodec -lswscale -lavutil ./a.out ffplay tmp.mpg ffplay tmp.h264 一次获取一个结果行,则可以在这样的while循环中执行此操作

->fetch()

或者使用$stmtkat = $this->db->prepare("SELECT * FROM kategorie"); $stmtkat->execute(); while ( $katarray=$stmtkat->fetch(PDO::FETCH_ASSOC) ) { var_dump($katarray); } 从一次调用PDO Stmt对象将所有行返回到本地数组

fetchAll()

答案 1 :(得分:2)

你只得到一行,因为:

  

PDOStatement :: fetch - 从结果集中获取下一行

使用fetchAll()来获取结果的完整array()或在fetch()循环中使用while()

fetch()while()的示例:

while ($stmtkat->fetch(PDO::FETCH_ASSOC)) {
  var_dump($katarray);
}

fetchAll()的示例:

$result = $stmtkat->fetchAll(PDO::FETCH_ASSOC)
var_dup($result);