PHP PDO遍历SQL结果仅显示最后一个

时间:2018-10-05 20:23:05

标签: php mysql json pdo

亲爱的

我试图将所有SQL结果提取到一个assoc数组中,然后再提取到json中,但是我不知道为什么我只得到最后一个sql行。

<?php
require_once "Xsecure/access.php";

        $Arry = array(); 
        $json = array();

        $access = new DatabaseAccess();
        $sql = $access->Connect();
        $stmt = $sql->prepare("select mid from players");
        $stmt->execute();
        $rowCount = $stmt->rowCount();  

        $Arry = $result;


    while ($result = $stmt->fetchAll(PDO::FETCH_ASSOC) ){
        $Arry = $result;
    }
        // for array data access
        foreach($Arry as $row){
          $json["mid"] = $row["mid"];
        };

        // 3. Disconnect db connection
        $sql = $access->Disconnect();

        // 4. Return json output
        echo json_encode($json, JSON_UNESCAPED_SLASHES);

?>

结果输出为:

{
"mid": "10"
}

不仅最后一行应该在1到10之间。我该如何实现?我想念什么?

注意:以后,我想向数组中添加不是从mySql数据库派生的额外键值对,因此我必须使用assoc数组。

预先感谢

1 个答案:

答案 0 :(得分:3)

...
$stmt->execute();
$rowCount = $stmt->rowCount();
$Arry = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($Arry as $row){
   $json[]["mid"] = $row["mid"];
};
...

甚至只是

...
$stmt->execute();
$rowCount = $stmt->rowCount();
$json = $stmt->fetchAll(PDO::FETCH_ASSOC);
...