【问题标题】:PDO Statement does not return full arrayPDO 语句不返回完整数组
【发布时间】:2016-04-04 14:36:36
【问题描述】:

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

我的 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 的新手。

你的时间。

【问题讨论】:

  • 这给了我数据输出:Array ([id] => 1 [kategorie] => Coaching)

标签: php arrays pdo


【解决方案1】:

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

如果您使用 ->fetch() 一次获取一个结果行,您可以在这样的 while 循环中执行此操作

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

或使用fetchAll() 将所有行从对 PDO Stmt 对象的一次调用中返回到本地数组中

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

var_dump($katarray);

【讨论】:

  • 刚要发表评论,您也可以提及 fetchAll,+1 :)
  • @JimL 是的,当我意识到他调用了变量$katarray 时,我才想到。感谢您的推动
  • 谢谢,成功了:)
【解决方案2】:

你只得到一行作为回报,因为:

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

使用fetchAll() 代替获得完整的array() 结果或在while() 循环中使用fetch()

fetch()while() 为例:

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

fetchAll() 为例:

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

【讨论】:

  • 也谢谢你,就是这样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-20
  • 1970-01-01
  • 2013-03-29
  • 1970-01-01
  • 2014-08-04
  • 1970-01-01
相关资源
最近更新 更多