2

我是 PHP 新手并试图制作一个非常简单的 api(我认为也是学习的好方法),为什么这不起作用?加载此页面时,输出为:{"queryString":"SELECT id, Name FROM Food WHERE userID=1 ORDER BY Name"}而不是我想要的 JSON 字符串

$dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);

$response = $dbh->query("SELECT id, Name FROM Food WHERE userID=1 ORDER BY Name");

$responseJSON = json_encode($response);

header('Content-type: application/json');
echo "$responseJSON";

$dbh = null;

查询没有任何问题,因为我在尝试此操作时得到了我想要的:

$dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);

$response = $dbh->query("SELECT id, Name FROM Food WHERE userID=1 ORDER BY Name");

    foreach ($response as $row)
        {
            print $row['Name'] . ' ';
        }


$dbh = null;

输出: 培根芝士片

4

1 回答 1

10

$dbh->query 返回一个PDOStatement对象,而不是行。要将行添加到 json,请在对象上调用fetchAll 。

$response = $dbh->query("SELECT id, Name FROM Food WHERE userID=1 ORDER BY Name")->fetchAll();

您还可以指定获取模式,例如

fetchAll(PDO::FETCH_ASSOC);
于 2013-01-16T14:25:56.213 回答