Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP PDO在SQL结果中循环只显示最后一个结果_Php_Mysql_Json_Pdo - Fatal编程技术网

PHP PDO在SQL结果中循环只显示最后一个结果

PHP PDO在SQL结果中循环只显示最后一个结果,php,mysql,json,pdo,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结果提取到一个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);

?>
它应该介于1到10之间,而不仅仅是最后一行。我怎样才能做到这一点?我错过了什么


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

提前感谢,

...
$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);
...
甚至只是

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

fetchAll()
或循环a
fetch()
。稍后,我想向数组中添加额外的键-值对,这些键-值对不是从mySql数据库派生的;你所需要做的就是
$stmt=$sql->prepare(“从玩家中选择mid”)然后
$stmt->execute()
then
echo json\u encode($stmt->fetchAll(),json\u UNESCAPED\u SLASHES)
@GrumpyCrouton我知道这个方法,但我需要向json添加额外的键值对,这些键值对不是从mySql派生的。这就是为什么我把它变得更复杂了,呵呵。
fetchAll()
已经在数组中提供了完整的结果集,为什么不直接使用它呢?不要循环,只需执行
$result=$stmt->fetchAll(PDO::FETCH\u ASSOC)
或循环a
fetch()
。稍后,我想向数组中添加额外的键-值对,这些键-值对不是从mySql数据库派生的;你所需要做的就是
$stmt=$sql->prepare(“从玩家中选择mid”)然后
$stmt->execute()
then
echo json\u encode($stmt->fetchAll(),json\u UNESCAPED\u SLASHES)
@GrumpyCrouton我知道这个方法,但我需要向json添加额外的键值对,这些键值对不是从mySql派生的。这就是为什么我要让它变得更复杂的原因,呵呵。Op说“我需要向Json中添加额外的键-值对,这些键-值对不是从mySql派生的”,所以添加对foreach循环的引用可能是非常有益的。到目前为止,看看Op提供的代码片段,没有什么。是的,我同意你的看法,我说的是一条评论,虽然我相应地修改了我的代码,但我仍然只得到最后一行:(你在哪里得到它?你有证据证明该查询返回的记录超过1条吗?我已经编辑了我的答案,请检查小而重要的更新
$json[][“mid”]=$row[“mid”]
或使用上次提供的解决方案
$json=$stmt->fetchAll(PDO::FETCH_ASSOC);
Op说“我需要向json中添加额外的键值对,这些键值对不是从mySql派生的”,因此,添加对foreach循环的引用可能会非常有益。到目前为止,查看OP提供的代码片段-没有任何东西。是的,我同意你的看法,我说的是一条注释,虽然我相应地修改了代码,但我仍然只得到最后一行:(你从哪里得到它?你有证据证明该查询返回了超过1条记录吗?我已经编辑了我的答案,检查小但重要的更新
$json[][“mid”]=$row[“mid”];
或者使用提供的上一个解决方案
$json=$stmt->fetchAll(PDO::FETCH_ASSOC);