我有一个存储在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));
?>
答案 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
编码的。