php - 为什么 json_encode 返回 null?

标签 php mysql mamp

我是 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

最佳答案

你可以尝试解决什么问题

  1. 探索错误

    echo json_last_error();
    echo json_last_error_msg();
    
  2. 使用 JSON_UNESCAPED_UNICODE

    $s = json_encode($resultArray, JSON_UNESCAPED_UNICODE);
    

关于php - 为什么 json_encode 返回 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33901074/

相关文章:

ssl - MAMP PRO 4.1.1 SSL - 您的连接不是私密的

mysql - MAMP 和 MyPHPAdmin 参数格式不正确

php - 尝试将 mysqli_real_escape_string 与 OOP 连接属性一起使用,但它发出警告

javascript - 功能不适用于网络浏览器中的模态

php - 学习 SELECT FROM WHERE 预处理语句

mysql - 将两个 SQL 数据库与多个表组合起来;在此过程中删除重复项

php - Laravel Paypal POST 请求被拒绝

javascript - Loaded() 内容不会继承 javascript

java - 我应该如何将 Map<String, LinkedList<Object>> 数据存储到数据库表中?

mysql - MAMP:MySQL 无法启动