空 json_encode

Posted

技术标签:

【中文标题】空 json_encode【英文标题】:Empty json_encode 【发布时间】:2016-01-27 13:00:02 【问题描述】:

低于 php 代码。它对数据库进行查询,将数据放入数组中,然后尝试将其传递给 json 并打印这些相同的数据。

问题是打印出来的是空的。 使用 print_r 我可以打印数组中的数据,但是当我将数据传递给 json 时,返回为空。我该如何解决这个问题?

<?php        
    $user = "root";
    $password = "";
    $db = "angulardb";
    $host = "localhost";
    $con = mysqli_connect("localhost", $user, $password, $db);

    if (mysqli_connect_errno())
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
    

    $usuario = mysqli_query($con, "SELECT *  FROM users");

    if (!$usuario) 
        echo "Não foi possível executar a consulta no banco de dados: " . mysql_error();
        exit;

    

    $return = array();

    while ($dados = mysqli_fetch_assoc($usuario)) 
        $return[] = $dados;

    
    header('Content-Type: application/json');   
    echo json_encode($return);

?>

数据库:

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(6) NOT NULL AUTO_INCREMENT,
  `nome` varchar(50) NOT NULL,
  `email` varchar(50) NOT NULL,
  `pass` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

INSERT INTO `users` (`id`, `nome`, `email`, `pass`) VALUES
(2, 'João Silva', 'joao.silva@angular.com', '123456'),
(3, 'Mario de Almeida', 'mario.almeida@angular.com', '123456');

【问题讨论】:

或许可以试试 json_last_error:php.net/manual/en/function.json-last-error.php 【参考方案1】:

这是因为从数据库返回的数据可能包含一些非 utf-8 字符。

你可以试试这个:

json_encode($data, JSON_UNESCAPED_UNICODE)

json_decode($json, false, 512, JSON_UNESCAPED_UNICODE)

还可以在此链接中尝试此答案: How to get json_encode() to work with ISO-8859-1 (åäö)

【讨论】:

【参考方案2】:

问题解决了。显然错误出在数据库的整理中。该银行就像拉丁语一样,移至utf8并正常运行。谢谢你

【讨论】:

以上是关于空 json_encode的主要内容,如果未能解决你的问题,请参考以下文章

thinkphp5 的空操作 空控制器 空模块

java中的空指针异常怎么解决

Kotlin空安全 ③ ( 手动空安全管理 | 非空断言操作符 !! | 使用 if 语句判空 )

Kotlin空安全 ④ ( 手动空安全管理 | 空合并操作符 ?: | 空合并操作符与 let 函数结合使用 )

ThinkPHP - 空模块+空操作

空操作和空控制器