我是 PHP 新手。我的问题是 json_encode 返回的空指针。我正在尝试从 mamp 服务器上的 mysql 数据库获取数据。我究竟做错了什么??我应该使用类似 utf8_encode 的东西??我试过了,没有什么特别的事情发生这是我的代码:
<?php
$servername = "localhost";
$username = "root";
$password = "root";
$database = "authors";
$db = new mysqli($servername, $username, $password, $database);
if (!$db){
die("Connection failed: " . mysqli_connect_error());
}
$sql = "SELECT * FROM names";
if ($result = mysqli_query($db, $sql)){
$resultArray = array();
$tempArray = array();
while($row = $result->fetch_object()){
$tempArray = $row;
array_push($resultArray, $tempArray);
}
header('Content-type: application/json');
print_r( $resultArray );
$s = json_encode($resultArray);
echo $s;
if( $s = NULL )
{
echo "Nullpointer";
}
elseif( $s == "" )
{
echo "Empty string";
}
}
$db->close();
?>
它是输出:
Array
(
[0] => stdClass Object
(
[FirstName] => Johny
[LastName] => Mielony
)
[1] => stdClass Object
(
[FirstName] => Will
[LastName] => Turner
)
)
Empty string
更新代码:
<?php
$servername = "localhost";
$username = "root";
$password = "root";
$database = "authors";
$db = new mysqli($servername, $username, $password, $database);
if (!$db){
die("Connection failed: " . mysqli_connect_error());
}
$sql = "SELECT * FROM names";
if ($result = mysqli_query($db, $sql)){
$resultArray = array();
$tempArray = array();
while($row = $result->fetch_object()){
$tempArray = $row;
array_push($resultArray, $tempArray);
}
header('Content-type: application/json');
print_r( $resultArray );
$s = json_encode($resultArray);
echo $s;
if( $s == false )
{
echo "Nullpointer";
}
elseif( $s == "" )
{
echo "Empty string";
}
else
{
echo "It's gooood";
}
}
$db->close();
?>
和输出:
Array
(
[0] => stdClass Object
(
[FirstName] => Adrian
[LastName] => Kaczmarek
)
[1] => stdClass Object
(
[FirstName] => Krzysztof
[LastName] => Rózga
)
)
Nullpointer
最佳答案
你可以尝试解决什么问题
探索错误
echo json_last_error(); echo json_last_error_msg();
使用 JSON_UNESCAPED_UNICODE
$s = json_encode($resultArray, JSON_UNESCAPED_UNICODE);
关于php - 为什么 json_encode 返回 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33901074/