Javascript 使用JSON从MySQL数据库获取错误数据

Javascript 使用JSON从MySQL数据库获取错误数据,javascript,php,mysql,json,database,Javascript,Php,Mysql,Json,Database,我的PHP脚本获取唯一用户列表及其在我的数据库中的最后条目。我的目标是获取这个用户列表并在javascript代码中使用它 我检查了我的PHP代码,它打印出了用户列表。然而,当我使用JSON将数据转换到javascript时,会显示一列完全不同的数据 我甚至可以从php中删除json_encode,并从SQL查询中删除该列数据,它仍然会显示出来。我刚开始使用PDO,所以我认为这是罪魁祸首。有什么帮助吗 PHP代码段: $dbh = new PDO("mysql:host=$hostname;db

我的PHP脚本获取唯一用户列表及其在我的数据库中的最后条目。我的目标是获取这个用户列表并在javascript代码中使用它

我检查了我的PHP代码,它打印出了用户列表。然而,当我使用JSON将数据转换到javascript时,会显示一列完全不同的数据

我甚至可以从php中删除json_encode,并从SQL查询中删除该列数据,它仍然会显示出来。我刚开始使用PDO,所以我认为这是罪魁祸首。有什么帮助吗

PHP代码段:

$dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

//Get all unique users last event.
$sql = ("SELECT * FROM events WHERE Id in (SELECT MAX(Id) FROM events GROUP BY UserName)");

$stmt = $dbh->prepare($sql);
if($stmt->execute(array($_GET['Region']))){
    while($row = $stmt->fetch()){
        //If most recent event is login or enter, user is currently logged in
        if($row['Type'] == "logout" || $row['Type'] == "login"){
            array_push($userList, $row['UserName']);
            $currentUserCount++;
        }
    }
}
echo("Number of Users Logged in: " . $currentUserCount);
echo json_encode($userList);

}
<script type="text/javascript">

    var userList = [];

    $(document).ready(function(){

        $.getJSON('/Statistics/process.php', function(data) {
            $.each(data, function(key){
                userList.push(key);
                document.write(key + "<br />");
            });
        });

        console.log(userList);

    });

</script>
JS代码片段:

$dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

//Get all unique users last event.
$sql = ("SELECT * FROM events WHERE Id in (SELECT MAX(Id) FROM events GROUP BY UserName)");

$stmt = $dbh->prepare($sql);
if($stmt->execute(array($_GET['Region']))){
    while($row = $stmt->fetch()){
        //If most recent event is login or enter, user is currently logged in
        if($row['Type'] == "logout" || $row['Type'] == "login"){
            array_push($userList, $row['UserName']);
            $currentUserCount++;
        }
    }
}
echo("Number of Users Logged in: " . $currentUserCount);
echo json_encode($userList);

}
<script type="text/javascript">

    var userList = [];

    $(document).ready(function(){

        $.getJSON('/Statistics/process.php', function(data) {
            $.each(data, function(key){
                userList.push(key);
                document.write(key + "<br />");
            });
        });

        console.log(userList);

    });

</script>
额外信息:

我的数据库设置了以下内容:

Id | UUID |用户名|地区|类型|时间|


我正在发送用户名数据,但在js中接收区域数据。

您无法在ajax成功回调之外记录预期结果,这是异步的。您的执行方法中使用数组$\u GET['Region']的原因是什么?它看起来不像您在SQL中使用它。我有一个带有图像映射的网页,单击该网页时,会向我的.php脚本添加一个查询。这方面的一个例子是我单击图像映射,它会引导用户进入一个名为process.php?Region=RegionNameHere的网页。然后在SQL查询中使用RegionNameHere来获取该区域中独占的用户列表您可以发布一个示例来说明console.logdata;在$.getJSON方法中显示。另外,发布一个print_r$userList的示例,true;在json_encode调用之前。print_r$userList,true;打印出一大串人名。例[约翰·多伊、罗纳德·麦克唐纳、乔治·华盛顿]。console.logdata打印出区域名称的关联数组,所有区域名称的值均为0。Ex.[key:'value',Region1:0,Region2:0,Region3:0]我想强调的是,我可以删除json_编码,数据仍在传输中。