首页 > 解决方案 > MySQL PDO 语句在每个 var 之后返回 \n

问题描述

我有一个有两列的表。播放器 & subbedOnFor。两列都可以包含玩家的 ID,我需要计算每个玩家出现在两列中的总次数。如果我也可以获得每个用户在每列中出现的总次数,这也很有帮助,因此结果可能类似于以下内容。

Player 1
TotalApps = 4
player = 3
subbedOnFor = 1

这是我的 SQL 语句

$limit = 5;
    $query = 'select player, game, count(*) AS totalApps, sum(first) AS starter, sum(second) AS sub
              from ((select game as game, player as player, 1 as first, 0 as second from appearances) union all (select game as game, subbedOnFor as subbedOnFor, 0, 1 from appearances)) myApps
              JOIN players ON myApps.player = players.playerid
              JOIN games ON myApps.game = games.gameid
              WHERE games.date >= :start AND games.date <= :end
              group by player  
              ORDER BY totalApps DESC
              LIMIT :limit';

    $stmt = $this->conn->prepare($query);
    $stmt->bindParam(':limit', $limit, PDO::PARAM_INT);
    $stmt->bindValue(':start', $seasonStart);
    $stmt->bindValue(':end', $seasonEnd);
    $count = $stmt->fetchColumn();
    if($stmt->execute()){
        
            while($row = $stmt->fetchObject()){
            
                $data[] = $row;
                print_r($row);
            }
        
        return $data;
    }

我的问题是,我从这个 PDO 语句返回的数据在每个返回值之后都有 \n 。

"stdClass Object\n(\n    [player] => 0\n    [game] => 53\n    [totalApps] => 3\n    [starter] => 0\n    [sub] => 3\n)\nstdClass Object\n(\n    [player] => 1\n    [game] => 53\n    [totalApps] => 2\n    [starter] => 1\n    [sub] => 1\n)\nstdClass Object\n(\n    [player] => 32\n    [game] => 53\n    [totalApps] => 1\n    [starter] => 1\n    [sub] => 0\n)\nstdClass Object\n(\n    [player] => 24\n    [game] => 53\n    [totalApps] => 1\n    [starter] => 1\n    [sub] => 0\n)\nstdClass Object\n(\n    [player] => 14\n    [game] => 53\n

有人知道所有这些 \n 来自哪里吗?我认为这与我的 SQL 代码有关,因为我在其他地方多次使用的 PDO 语句的格式没有问题。

此外,当 this 传递回 jQuery $.ajax 语句时,警报输出如下所示。

[{\"player\":\"0\",\"game\":\"53\",\"totalApps\":\"3\",\"starter\":\"0\",\"sub\":\"3\"},{\"player\":\"1\",\"game\":\"53\",\"totalApps\":\"2\",\"starter\":\"1\",\"sub\":\"1\"},{\"player\":\"32\",\"game\":\"53\",\"totalApps\":\"1\",\"starter\":\"1\",\"sub\":\"0\"},{\"player\":\"24\",\"game\":\"53\",\"totalApps\":\"1\",\"starter\":\"1\",\"sub\":\"0\"},{\"player\":\"14\",\"game\":\"53\",\"totalApps\":\"1\",\"starter\":\"1\",\"sub\":\"0\"}]"

当使用完全相同的 pdo 设置和更多“基本”我的 sql 语句时,我没有得到很多 \\,自从尝试在 FROM 语句中使用 SELECT 以来,我只遇到过这个问题(我认为!)。

标签: phpmysqlpdo

解决方案


我接受了删除我用来显示 ocde 的 print_r 的建议,再加上通过编辑器重新启动并复制并粘贴 SQL 似乎已经解决了这个问题,但仍然不能 100% 确定为什么 JS 没有解析JSON,但不再是问题。


推荐阅读