SELECT * FROM table |只获得第一行

时间:2016-05-28 22:45:49

标签: php mysql

已解决:只需使用fetchAll而不是fetch

我有一个简单的SQL查询,可以在phpmyadmin中运行,但在php中我只返回第一行。该表有很多行,因为它是世界表中的城市(大约44.000行)。

function getAllCities(){
        include 'db.php';

        $response = json_decode('{"status":"error"}');

        if(isset($_SESSION['user'])) {
            $query = $conn->prepare("SELECT * FROM cities_countries");
            $query->execute();

            $result = $query->fetch(PDO::FETCH_ASSOC);

            $response->status = "success";
            $response->cities = $result;
        }

        echo json_encode($response);
    }

这是返回的内容:

{
   status: "success",
   cities: {
      id: "1",
      name: "Bombuflat, India"
   }
}

如上所述,如果我在phpmyadmin中运行查询,我会得到所有结果。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

如果要输出所有结果,应使用fetchAll方法

weird_list = [(u'I', u'O'), (u'met', u'O'), (u'with', u'O'), (u'Alan', u'PERSON'), (u'yesterday', u'O')]
for item in weird_list:
    if 'PERSON' in item:
        print item[0]    #will return item number 1 of the tuple

在手册http://www.php.net/manual/en/pdostatement.fetchall.php

中查找更多详细信息和选项