数组到字符串转换PHP

时间:2016-02-23 21:32:24

标签: php pdo

因为标题说我在尝试显示我的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) {,我会显示一个结果,但我需要它来显示每个结果

1 个答案:

答案 0 :(得分:2)

$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。