简体   繁体   English

使用php PDO从数据库获取所有用户的列表

[英]Getting list of all users from Database using php PDO

I am trying to get a list of players from database with specific range of latitude and longitude. 我正在尝试从数据库中获取具有特定纬度和经度范围的玩家列表。 The query works fine and give me results. 查询工作正常,并给我结果。 However these results may include more than one player. 但是,这些结果可能包括多个玩家。 Current code as shown below gives me JSON Encoded only one player. 如下所示的当前代码为我提供了JSON编码,仅一个播放器。 How can I get all players JSON ENCODED. 如何获得所有播放器的JSON编码。

function GetPlayersInRange() 
    {
        try {
            $conn = $this->GetDBConnection();

            $long1 = trim($_REQUEST['long1']);
            $long2 = trim($_REQUEST['long2']);
            $lat1  = trim($_REQUEST['lat1']);
            $lat2  = trim($_REQUEST['lat2']);


            $statement = $conn->prepare('SELECT * FROM players WHERE longitude > :long1 AND longitude < :long2 AND latitude > :lat1 AND latitude < :lat2');
            $statement->bindParam(':long1', $long1, PDO::PARAM_STR);
            $statement->bindParam(':long2', $long2, PDO::PARAM_STR);
            $statement->bindParam(':lat1' , $lat1, PDO::PARAM_STR);
            $statement->bindParam(':lat2' , $lat2, PDO::PARAM_STR);
            $statement->execute();

            if(!($row = $statement->fetch(PDO::FETCH_ASSOC))) 
            {
                return "No Players";
            }

            $conn = null;
        } catch(PDOException $e) {
            throw $e;
        }

        return $row;
    }

Change $statement->fetch to $statement->fetchAll . $statement->fetch更改$statement->fetch $statement->fetchAll Fetch will only "Fetch the next row from a result set" whereas fetchAll will "Return an array containing all of the result set rows". Fetch将仅“从结果集中获取下一行”,而fetchAll将“返回包含所有结果集所有行的数组”。

You shouldn't be comparing string to int/double in your query. 您不应该在查询中将字符串与int / double进行比较。 When using PDO::PARAM_STR, it'll wrap your data in single quotes. 使用PDO :: PARAM_STR时,它会将数据包装在单引号中。 Try to use PDO::PARAM_INT here. 尝试在此处使用PDO :: PARAM_INT。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM