Php 如何将多个语句的结果放入Assocative数组中

Php 如何将多个语句的结果放入Assocative数组中,php,mysql,Php,Mysql,我试图有一个个人资料页面,你可以查看你的朋友连接,每个“朋友”显示个人资料图片,用户名,姓名,朋友数和帖子数。我使用ajaxget获取结果。在phpmyadmin中获得结果的唯一方法是通过2条select语句。在我的php中运行它时,我无法获得使用关联数组的结果。这是我的密码: $json = '{"people":['; $sql = "SELECT u.uUsername, u.uName, u.uSurname, u.uProfilePic,

我试图有一个个人资料页面,你可以查看你的朋友连接,每个“朋友”显示个人资料图片,用户名,姓名,朋友数和帖子数。我使用ajaxget获取结果。在phpmyadmin中获得结果的唯一方法是通过2条select语句。在我的php中运行它时,我无法获得使用关联数组的结果。这是我的密码:

$json = '{"people":[';
        $sql = "SELECT u.uUsername, u.uName, u.uSurname, u.uProfilePic, u.User_ID, COUNT(c.Conn_ID) AS Conns
                FROM tbusers u INNER JOIN tbconnections c
                ON u.User_ID = c.connected OR u.User_ID = c.connector
                WHERE c.connector = $user OR c.connected = $user
                GROUP BY u.User_ID;
                
                SELECT COUNT(n.Post_ID) AS Posts
                FROM tbusers u INNER JOIN tbconnections c
                ON u.User_ID = c.connected OR u.User_ID = c.connector
                INNER JOIN tbposts n
                ON n.User_ID = u.User_ID
                WHERE c.connector = $user OR c.connected = $user
                GROUP BY u.User_ID";                    
        if($conn->multi_query($sql)) {
            do {
                if($result = $conn->store_result()) {
                    $res = $result->fetch_all(MYSQLI_ASSOC);
                    foreach ($res as $row){ var_dump($row)                              ;
                        $json .= '{"username" : "'.$row['uUsername'].'", "name" : "'.$row['uName'].'", "surname" : "'.$row['uSurname'].'",'.
                            ' "pic" : "'.$row['uProfilePic'].'", "uid" : "'.$row['User_ID'].'", "conns" : "'.$row['Conns'].'"},';
                        }
                }
            }
            while($conn->more_results() && $conn->next_result());
            $json = substr($json, 0, strlen($json) - 1);
            $json .= ']}';
            echo htmlspecialchars($json, ENT_NOQUOTES);
我从var_转储中得到的结果是:

数组(6){[“uUsername”]=>string(11)“Einsteinium”[“uName”]=>string(5)“Charl”[“uSurname”]=>string(6)“Meyers”[“upofilepic”]=>string(24)“images/profilePics/1.jpg”[“User_ID”]=>string(1)“1”[“Conns”=>string(1)”1}数组(6){[“uUsername”=>string(5)“Pinky”[“uName”=>string(7)“Mariska”[“uSurname”=>[“uProfilePic”]=>string(24)“images/profilePics/4.jpg”[“User_ID”]=>string(1)“4”[“Conns”]=>string(1)“2”}数组(6){[“uUsername”]=>string(6)“Sannie”[“uName”]=>NULL[“uSurname”]=>NULL[“uProfilePic”]=>NULL[“User_ID”]=>string(1)“5”[“Conns”=>string(1)“1”数组(1)=>string(1)}>

但我在运行时仍会收到以下注意事项,请注意,尽管我使用了正确的索引,但它显示未定义索引:

注意:第182行C:\xampp\htdocs\IMY\Project\profileChange.php中未定义的索引:uUsername

注意:未定义的索引:在第182行的C:\xampp\htdocs\IMY\Project\profileChange.php中uName

注意:第182行C:\xampp\htdocs\IMY\Project\profileChange.php中的未定义索引:uSurname

注意:未定义的索引:C:\xampp\htdocs\IMY\Project\profileChange.php中的uProfilePic,位于第183行

注意:未定义索引:C:\xampp\htdocs\IMY\Project\profileChange.php中的User\u ID,第183行

注意:未定义的索引:C:\xampp\htdocs\IMY\Project\profileChange.php中的Conns,位于第183行

它似乎还输出了
var\u dump($row)
中的第二条select语句:

数组(1){[“Posts”]=>string(1)“1”}

json字符串实际上包含我想要的数据,但其中包含3个额外的结果:

{“人”:[{“用户名”:“Einsteinium”,“姓名”:“Charl”,“姓氏”:“Meyers”,“pic”:“images/profilePics/1.jpg”,“uid”:“1”,“conns”:“1”},{“用户名”:“Pinky”,“姓名”:“Mariska”,“姓氏”:“Meyers”,“pic”:“images/profilePics/4.jpg”,“uid”:“4”,“conns”:“2”{“用户名”:“Sannie”,“姓名”:“姓氏”:“pic”,“pic”,“uid”:“Sannie”:”5、“康涅狄格州”:“1”},{“用户名”:“姓名”:“姓氏”:“pic”:“uid”:“康涅狄格州”:“},{”用户名”:“姓名”:“姓名”:“,”姓氏::“康涅狄格州”:“},{”用户名::“姓名”:“,”姓氏::“pic”:“uid”:“康涅狄格州”:“}”


我知道我做得不对,做这件事的最佳方法是什么?

不要手动生成json出于某种原因…使用它。这是因为性能安全问题吗?不是。因为您面临着JS等价于sql注入攻击的风险-您是手动操作的,这意味着您必须执行生成语法有效JS所需的所有操作。相反,构建一个普通的PHP数据结构,然后使用json_encode()它会做所有的艰苦工作,你只是坐下来放松。哦,我明白了,这就是为什么我不迎合的原因是因为我的网站处理GET请求,但它仍然是开放的攻击没有关系。你正在填充任意文本到什么是有效的JS。考虑<代码>“名称”:“约翰”Meister-doe“。哎呀。。。语法错误。