循环遍历表

时间:2016-02-10 17:09:58

标签: php pdo

我有一个名为events的表,有3个条目:

-------------------------------------
| Name | Description | Image | Date |
-------------------------------------

我正在调用PDO查询,如下所示:

`Connection handled in a class`
$stmt = $DB_con->prepare("SELECT Name, Description, Image, Date FROM events");
$stmt->execute();

$events = array();
if ($stmt->execute()) {
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        $events = $row;
    }
}

稍后在我的代码中,当我呼吁$events时:

for ($x = 0; $x < count($events); $x++) {
    echo $events[$x];
}

但对我来说,所有回报都是:

ArrayArrayArray

1 个答案:

答案 0 :(得分:1)

首先,请在while()循环

中查看此语句
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $events = $row;
           ^ it should be $events[]
}

在每次迭代中,您都要将数组分配给$events,而不是追加它。

第二,当你执行此操作echo $events[$x];时,它会显示 ArrayArrayArray ,因为$events[$x]实际上是一个数组,而不是一个字符串。

所以你的代码应该是这样的:

// your code

$events = array();
if ($stmt->execute()) {
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        $events[] = $row;
    }
}

for ($x = 0; $x < count($events); $x++) {
    echo $events[$x]['Name'] . "<br />";

    // like that you can do this
    // echo $events[$x]['Description'];
    // echo $events[$x]['Image'];
    // echo $events[$x]['Date'];
}