常规错误:2014无法在其他无缓冲的情况下执行查询 查询是活动的。考虑使用PDOStatement :: fetchAll()。 或者,如果您的代码只是针对mysql运行, 您可以通过设置启用查询缓冲 PDO :: MYSQL_ATTR_USE_BUFFERED_QUERY属性。
我的代码: - 创建一个select标签并用数据库中的记录填充它
<?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之外寻找答案。请指教谢谢 克莱门特
答案 0 :(得分:0)
以下代码适用于我。
<?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>";
}
?>