PDO-fetchAll语法不起作用


PDO - fetchAll syntax does not work

一般错误: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之外寻找答案。请告知谢谢Clement

以下代码适用于我。

<?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>"; 
}
?>