【问题标题】:PHP - PDO fetch loopPHP - PDO 获取循环
【发布时间】:2012-01-05 08:10:22
【问题描述】:

我想我在这里疯了。

这是代码。 (为了证明这一点,这是我实际尝试做的简化版本。)

$STH = $DBH->query("SELECT * FROM help");
$STH->setFetchMode(PDO::FETCH_ASSOC);

while($row = $STH->fetch()) {
    echo $row['text'];
    $help_text = $row['text'];
}
echo "->";
echo $help_text;
echo "<-";

使用句柄 DBH 与 MySQL db 的 db 连接很好(未列出)。查询工作正常。循环内$row['text'] 的回声多次正常工作。但是,$help_text-&gt;&lt;- 之间的回显什么也不做,导致显示-&gt;&lt;-。我希望 echo 显示 $row['text'] 的最后一个实例。

请问为什么这不起作用?!

【问题讨论】:

  • 你能告诉我们这个查询返回什么吗,如果最后一行是空的,那么 help_text 也将是空的
  • 除非我遗漏了一些非常明显的东西,否则您的代码中没有任何内容可以取消设置 $help_text。问题一定出在其他地方。此外,使用var_dump() 来检查它的值,而不是普通的echo
  • 离题:注意PDOStatement实现Traversable,所以你可以使用foreach循环来迭代结果:foreach ($STH as $row) { ... }
  • 是否有可能$row['text'] 是一个引用变量,一旦光标经过结果集的末尾,它就会变得未定义?
  • SergeS - 你成功了!最后一行的“文本”值为空。很抱歉,谢谢大家的建议。

标签: php pdo


【解决方案1】:

你需要在循环外声明它

$help_text = "";
while($row = $STH->fetch()) {
    echo $row['text'];
    $help_text .= $row['text'];
}
echo "->";
echo $help_text;
echo "<-";

【讨论】:

  • 我认为他不想连接所有值。
  • 我添加了 $help_text = "a";回声 $help_text;在循环之前。循环之前的回声产生一个 a。在循环之后,它仍然使 ->
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-14
  • 2012-10-09
  • 2015-10-29
  • 1970-01-01
  • 2013-03-05
相关资源
最近更新 更多