所以正如标题所说,我在尝试显示 sql 查询中的 5 个结果时遇到了问题,我不知道如何将它们转换为数组,
# Collection of SQL
try {
$sql = $conn->query("SELECT Channel_Location FROM channels
ORDER BY RAND()
Limit 5");
} catch(PDOException $e) {
echo $sql . "<br>" . $e->getMessage();
}
foreach($sql->fetchAll(PDO::FETCH_ASSOC) as $c) {
echo $c . "<br>";
}
$conn = null;
我无法弄清楚如何显示结果,如果我将foreach($sql->fetchAll(PDO::FETCH_ASSOC) as $c) {
更改为foreach($sql->fetch(PDO::FETCH_ASSOC) as $c) {
它会显示一个结果,但我需要它来显示每个结果
$sql = "SELECT Channel_Location FROM channels ORDER BY RAND() Limit 5";
$channels = $conn->query($sql)->fetchAll(PDO::FETCH_COLUMN);
foreach($channels as $c) {
echo $c . "<br>";
}
您的主要问题是您正在尝试使用一个不知道其类型的变量。它适用于$sql(也被错误命名)和 fetchAll 结果。您应该事先从手册或快速测试中了解变量类型。$sql不包含 SQL 字符串,因此无法将其回显出来。fetchAll 结果包含一个嵌套数组,这意味着当您迭代它时,您仍然有一个数组作为项目,您也不能直接回显。要测试变量并查看是否可以将其回显出来,请始终使用 var_dump()
以防出现问题。
要解决您必须解决的所有众多问题
- 正确命名变量(以区分 SQL 查询和语句)
- 摆脱 try catch(因为 PHP 已经为您报告错误) 使用 PDO::
- FETCH_COLUMN 而不是 PDO::FETCH_ASSOC 这将为您提供所需的结果类型 - 一维 atrray。