【问题标题】:PDO - fetchAll syntax does not workPDO - fetchAll 语法不起作用
【发布时间】:2013-02-05 08:34:24
【问题描述】:

一般错误:2014 无法执行查询,而其他无缓冲 查询处于活动状态。考虑使用 PDOStatement::fetchAll()。 或者,如果您的代码只针对 mysql 运行, 您可以通过设置启用查询缓冲 PDO::MYSQL_ATTR_USE_BUFFERED_QUERY 属性。

我的代码:- 创建一个选择标签并用数据库中的记录填充它

<?php
    echo "<select name='test'>";
    $call = $dbh->prepare('call listmfg_codes()');
    $call->execute();
    $result = $call->fetchALL(PDO::FETCH_COLUMN, 0);
    foreach($result as $row)
    {
?>      
    <option value="<?php echo $row['mfg_code'];?>"><?php echo $row['mfg_code'];?>      </option>";
<?php       
}
echo "</select>"; 
?>

它似乎不起作用。请指教。谢谢


然后我再次尝试修改脚本,以适应 closeCurosr() 和 fetchAll()。还是不行

<?php
....
$stmt_call -> closeCursor();

echo "<select name='test'>";
$stmt_call = $dbh->prepare('call listmfg_codes()');
$stmt_call->execute();
foreach ($stmt_call -> fetchAll() as $row)
{
?>
<option value="<?php echo $row['mfg_code'];?>"> <?php echo $row['mfg_code'];?> </option>";
<?php       
}
echo "</select>";
?>

即使包含 fetchAll() 和 closeCursor(),同样的错误仍然存​​在。

我仍在 stachOverFlow 之外寻找答案。请指教 谢谢 克莱门特

【问题讨论】:

标签: php pdo


【解决方案1】:

以下代码适用于我。

<?php
    echo "<select name='test'>";
   $call = $dbh->prepare("SELECT DISTINCT(mfg_code) FROM test");
    $call->execute();
    $result = $call->fetchALL(PDO::FETCH_COLUMN, 0);
    foreach($result as $row)
    {
?>      
    <option value="<?php echo $row['mfg_code'];?>"><?php echo $row['mfg_code'];?>      </option>";
<?php       
}
echo "</select>"; 
}

?>

【讨论】:

  • 它并没有真正起作用。还是同样的错误。我怀疑这可能是因为在一个脚本中重复执行了 mysql 脚本的 PDO,尽管无法确定。唯一的方法是将长脚本分成两个脚本文件,每个文件都有自己的 PDO 执行。它奏效了。
  • 在您的问题中没有重复执行 PDO 的迹象。建议您在提出的任何新问题中指出所有相关因素
猜你喜欢
  • 2016-04-16
  • 2015-03-31
  • 1970-01-01
  • 1970-01-01
  • 2017-06-16
  • 1970-01-01
  • 2018-11-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多