Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP echo json始终为空值_Php_Json - Fatal编程技术网

PHP echo json始终为空值

PHP echo json始终为空值,php,json,Php,Json,我试图用PHP从mysql数据库返回一些JSON值 我尝试了很多方法,我认为我的代码是正确的,但它总是返回空白 这样我可以看到返回的值: echo $row['name']; 但是当我使用 json_编码 它返回空白 这是我的密码: <?php // $dbconfig = require_once('../config.php'); require_once('../DBConnection.php'); // $database = new DBConnection($dbconf

我试图用PHP从mysql数据库返回一些JSON值

我尝试了很多方法,我认为我的代码是正确的,但它总是返回空白

这样我可以看到返回的值:

echo $row['name'];
但是当我使用

json_编码

它返回空白

这是我的密码:

<?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
需要使用它

utf8_编码

答案如下:

foreach($rows as $row){
    //echo $row['name']; // IT WORKS
    $estado = array();
    $estado['name'] = utf8_encode($row['name']);

    array_push($response["estado"], $estado);
}

这可能是因为您的记录中有未替换的unicode

使用
json\u编码($response,json\u UNESCAPED\u UNICODE)

所有字符串数据必须采用UTF-8编码


$response
在您的范围内不存在,除非您创建它(如果存在$rows)。将定义从文件顶部移到函数中。此外,如果没有行,else将抛出错误,因为既不存在
$row
也不存在
$response
。@aynber在函数中继续返回空白。使用
json\u encode($response,json\u UNESCAPED\u UNICODE)
这可能是因为您的记录中使用了未替换的unicode。我很高兴这有帮助:)
foreach($rows as $row){
    //echo $row['name']; // IT WORKS
    $estado = array();
    $estado['name'] = utf8_encode($row['name']);

    array_push($response["estado"], $estado);
}