无法将数据检索为JSON对象

时间:2016-04-02 06:10:50

标签: php mysql json pdo

我有一个存储在MAMP PhpMyAdmin中的mysql表,名为' employees'。结构是

  • 员工(身份证,姓名所在地)

    我有一个PHP代码,可以将数据检索为JSON对象并在浏览器上显示。但是当我运行它时,所有值都是' null'

这是我的剧本:

<?php
// Enter username and password
$username = root;
$password = root;

// Create database connection using PHP Data Object (PDO)
$db = new PDO("mysql:host=localhost;dbname=movies", $username, $password);

// Identify name of table within database
$table = 'employees';

// Create the query - here we grab everything from the table
$stmt = $db->query('SELECT * from '.$table);

// Close connection to database
$db = NULL;

$result = array();

while($rows = $stmt->fetch()){
    array_push($result, array('name' => $row[0],
                              'location'  => $row[1]));
};

echo json_encode(array('result' => $result));

?>

3 个答案:

答案 0 :(得分:0)

问题是你使用了错误的PDO功能。要获得多行 s ,您需要使用PDO::fetchAll(),而不是fetch():

$rows = $db->query('SELECT name,location from employees')->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($rows);

是您需要的所有代码。

答案 1 :(得分:0)

你在while循环中使用了错误的变量名,请参阅:

while($rows = $stmt->fetch())

而且......在你的循环中:

array_push($result, array('name' => $row[0], 'location' => $row[1]));

尝试将$rows = $stmt->fetch()更改为$row = $stmt->fetch()

答案 2 :(得分:-1)

在尝试回显json_encoded字符串之前,您需要检查是否从数据库返回任何结果。尝试做

echo "<pre>";
print_r($result);
echo "</pre>";

您可能在$result变量中得不到任何内容。但是考虑到它不是空的,json可能是null数据,你试图编码它不是UTF-8编码的。