【问题标题】:Getting query result into array using while使用 while 将查询结果放入数组
【发布时间】:2014-02-08 09:07:48
【问题描述】:

我对 PHP 很陌生。其实我刚看完了它的介绍,由于我非常缺乏经验,所以如果我解释得不好,还请见谅。我正在学习如何使用 PDO 连接到数据库,并且我想将查询的结果转储到一个数组中,以便我想使用的图形库可以绘制最后一天对特定地点的访问次数的图表。其他一切正常,并且查询在使用 phpMyAdmin 运行时返回预期结果。我不能直接使用查询的结果,因为库由于某种原因不理解它。

因此,我想到了使用 while 来遍历结果并将信息添加到数组中。但由于某种原因,只添加了最新的结果。我知道我在这里遗漏了一些非常简单的东西,但我仍然太无知,不知道我需要做什么。

# Establish the connection
$conn = new PDO("mysql:host=$host;dbname=$database", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$data = $conn->query('SELECT HOUR( TIMESTAMP ) AS HOUR , COUNT( detected_key ) AS num_rows
                            FROM Visitors
                            GROUP BY HOUR( TIMESTAMP ) 
                            LIMIT 0 , 24');

while($row = $data->fetch(PDO::FETCH_ASSOC)) {
$visit = array (
$row['HOUR'] => $row['num_rows']
);
}

【问题讨论】:

    标签: php mysql arrays pdo while-loop


    【解决方案1】:

    像这样重写你的while

    while($row = $data->fetch(PDO::FETCH_ASSOC)) {
    $visit[$row['HOUR']]= $row['num_rows'];
    }
    
    print_r($visit); // "prints your array"
    

    你得到了最后一个值,因为你每次都在覆盖。

    【讨论】:

    • 做到了!你能指点我一个确切解释你所做的事情的地方吗?
    • 实际上,您每次都在 while 循环中创建一个新数组 $visit。这就是问题所在。
    • 关于数组的最佳资源是 PHP 手册。 in2.php.net/manual/en/function.array.php
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-28
    相关资源
    最近更新 更多