Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.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查询返回许多结果_Php_Json_Pdo - Fatal编程技术网

Php PDO查询返回许多结果

Php PDO查询返回许多结果,php,json,pdo,Php,Json,Pdo,我的JSON响应有问题。在我的mysql数据库中,我有两个表:用户表和游戏表。当我尝试从一个用户获取所有游戏时,我会在我的响应中获取这些游戏,但是*我的用户表中的不同用户数量。因此,如果我想从id为8的用户那里获得所有游戏,例如3个游戏,我会得到这些游戏,但会乘以我拥有的唯一用户数量,比如9。因此,查询返回27个游戏(9*3个相同的游戏)。我做错了什么 $pm_id = $_POST["pm_id"]; $pm_pass = $_POST["pm_pass"]; $pm_timestamp

我的JSON响应有问题。在我的mysql数据库中,我有两个表:用户表和游戏表。当我尝试从一个用户获取所有游戏时,我会在我的响应中获取这些游戏,但是*我的用户表中的不同用户数量。因此,如果我想从id为8的用户那里获得所有游戏,例如3个游戏,我会得到这些游戏,但会乘以我拥有的唯一用户数量,比如9。因此,查询返回27个游戏(9*3个相同的游戏)。我做错了什么

 $pm_id = $_POST["pm_id"];
 $pm_pass = $_POST["pm_pass"];
 $pm_timestamp = $_POST["pm_timestamp"];

try {
     $dbconn = 'mysql:host=' . DBHOST . ';dbname=' . DBDATA;
     $db = new PDO($dbconn, DBUSER, DBPASS);
 } catch (PDOException $e) {
     echo 'Connection failed: ' . $e->getMessage();
 }

 $statement = $db->prepare('SELECT * FROM users WHERE user_id = :id AND password =      :pass');
 $statement->execute(array(':id' => $pm_id, ':pass' => $pm_pass));
 $statement->setFetchMode(PDO::FETCH_ASSOC);

 $row = $statement->fetch();
     if($row['timestamp'] == $pm_timestamp){
         #no sync necessary
         echo json_encode("no sync needed");
     }else{
         #start sync
         $games = array();
         $statement_getAllGames = $db->prepare('SELECT game.game_id, game.user_id,       game.name, game.buyin, game.result, game.startDate, game.endDate, game.location,      game.isTournament, game.participants, game.endposition, game.comment, game.blinds,      game.pause,
         game.visibility, users.timestamp FROM game, users WHERE game.user_id = :id AND    game.timestamp > :timestamp');
         $statement_getAllGames->execute(array(':id' => $pm_id, ':timestamp' =>   $pm_timestamp));

         while($row = $statement_getAllGames->fetch(PDO::FETCH_ASSOC)){
             $games[] = array('game'=>$row);
         }
         echo json_encode(array('games'=>$games));

 };
如果有帮助,我可以添加表的结构

FROM game, users
您缺少加入条件
game.user\u id=user.user\u id
。您可以将其添加到WHERE子句中,也可以使用较新的SQL-92连接语法(请参阅):


非常感谢。这让我很开心。
FROM game INNER JOIN users ON game.user_id = user.user_id