空 json_encode
Empty json_encode
低于 PHP 代码。它对数据库进行查询,将数据放入数组中,然后尝试将其传递给 json 并打印这些相同的数据。
问题是打印出来的是空的。
使用 print_r
我可以打印数组中的数据,但是当我将数据传递给 json 时,return 为空。我该如何解决这个问题?
<?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');
这是因为从数据库返回的数据可能包含一些 non-utf-8 字符。
你可以试试这个:
json_encode($data, JSON_UNESCAPED_UNICODE)
或
json_decode($json, false, 512, JSON_UNESCAPED_UNICODE)
也可以在 link 中试试这个答案:
How to get json_encode() to work with ISO-8859-1 (åäö)
问题已解决。显然错误是在数据库的整理中。银行就像拉丁语,转移到 utf8 并正常运行。谢谢
低于 PHP 代码。它对数据库进行查询,将数据放入数组中,然后尝试将其传递给 json 并打印这些相同的数据。
问题是打印出来的是空的。
使用 print_r
我可以打印数组中的数据,但是当我将数据传递给 json 时,return 为空。我该如何解决这个问题?
<?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');
这是因为从数据库返回的数据可能包含一些 non-utf-8 字符。
你可以试试这个:
json_encode($data, JSON_UNESCAPED_UNICODE)
或
json_decode($json, false, 512, JSON_UNESCAPED_UNICODE)
也可以在 link 中试试这个答案: How to get json_encode() to work with ISO-8859-1 (åäö)
问题已解决。显然错误是在数据库的整理中。银行就像拉丁语,转移到 utf8 并正常运行。谢谢