我正在尝试使用PHP从mysql数据库返回一些值作为JSON。
我尝试了很多方法,我认为我的代码是正确的,但是它总是返回空白。
这样,我可以看到返回的值:
echo $row['name'];
但是当我使用
json_encode
它返回空白。
这是我的代码:
<?php
// $dbconfig = require_once('../config.php');
require_once('../DBConnection.php');
// $database = new DBConnection($dbconfig);
// $sqlSelect = "select * from Estados";
// $rows = $database->getQuery($sqlSelect);
$response = array();
class EstadoDAO {
public function getEstados($dbconfig) {
$sqlSelect = "select * from Estados";
$database = new DBConnection($dbconfig);
try {
$rows = $database->getQuery($sqlSelect);
if ($rows) {
$response["estado"] = array();
foreach($rows as $row){
//echo $row['name']; // IT WORKS
$estado = array();
$estado['name'] = $row['name'];
array_push($response["estado"], $estado);
}
} else {
//zero linhas
$estado = array();
$estado['name'] = $row['ERRO'];
array_push($response["estado"], $estado);
}
} catch (Exception $e) {
}
$database->__destruct();
echo json_encode($response);
} //function
}// Class
编辑1
var_dump响应:
array(1) { ["estado"]=> array(3) { [0]=> array(1) { ["name"]=> string(17) "Rio Grande do Sul" } [1]=> array(1) { ["name"]=> string(14) "Santa Catarina" } [2]=> array(1) { ["name"]=> string(6) "Paran�" } } }
答案 0 :(得分:1)
可能是因为您在记录中未转义unicode。
使用json_encode($response, JSON_UNESCAPED_UNICODE)
所有字符串数据都必须采用UTF-8编码。
答案 1 :(得分:0)
需要使用
utf8_encode
这是答案:
foreach($rows as $row){
//echo $row['name']; // IT WORKS
$estado = array();
$estado['name'] = utf8_encode($row['name']);
array_push($response["estado"], $estado);
}