数组到字符串的转换 PHP


Array to String Conversion PHP

所以正如标题所说,我在尝试显示 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。