gpt4 book ai didi

php - PDO 只会返回第一行数据集

转载 作者:可可西里 更新时间:2023-11-01 00:33:32 25 4
gpt4 key购买 nike

这段代码完美地显示了第一行,但仅此而已。我已经尝试过 fetchAll() ,并且可以获得正确的行数来显示,但是每行只填充一列,并且数据值被单词“Array”替换。我试过 while 循环。这让我发疯!

/* SQL */
$sql = "SELECT * FROM exam WHERE exam.Level = ? AND exam.Centre!=''";

/* parameter */
$level = 'B2';

/* prepare */
$stmt = $db->prepare($sql);

/* Execute */
$stmt->execute(array($level));

/* Fetch */
$row = $stmt->fetch(PDO::FETCH_ASSOC);

/* Display */
echo '<table>
<tr>';
if ($row)
{
foreach ($row as $key => $value)
{
echo '<td>';
echo $value;
echo '</td>';
}
}
echo '</tr>
</table>';

最佳答案

您将仅返回一行的 fetch() 方法与返回所有行的 fetchAll() 方法混淆了。然而,只要后者返回一个嵌套 数组,您还需要两个 嵌套foreach 语句。

此外,建议将您的业务逻辑(或数据操作)与显示逻辑分开。
此外,您的代码包含一些不必要的多余内容,最好将其删除。

所以正确的版本应该是:

/* Business logic */
$sql = "SELECT * FROM exam WHERE Level = ? AND Centre!=''";
$level = 'B2';
$stmt = $db->prepare($sql);
$stmt->execute(array($level));
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);

/* Display logic */
?>
<table>
<? foreach ($data as $row): ?>
<tr>
<? foreach ($row as $value): ?>
<td><?=$value?></td>
<? endforeach ?>
</tr>
</table>

关于php - PDO 只会返回第一行数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16649029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com