Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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 为什么json_encode返回空值?_Php_Mysql_Mamp - Fatal编程技术网

Php 为什么json_encode返回空值?

Php 为什么json_encode返回空值?,php,mysql,mamp,Php,Mysql,Mamp,我是PHP新手。我的问题是json_encode返回的空指针。我正在尝试从mamp服务器上的mysql数据库获取数据。我做错了什么??我应该使用类似utf8\u编码的东西??我已经试过了,没有什么特别的事情发生这是我的密码: <?php $servername = "localhost"; $username = "root"; $password = "root"; $database = "authors"; $db = new mys

我是PHP新手。我的问题是json_encode返回的空指针。我正在尝试从mamp服务器上的mysql数据库获取数据。我做错了什么??我应该使用类似utf8\u编码的东西??我已经试过了,没有什么特别的事情发生这是我的密码:

    <?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();
?>

更新代码:

<?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();
?>

你们能解决的问题是什么

  • 探索错误

    echo json_last_error();
    echo json_last_error_msg();
    
  • 使用JSON_UNESCAPED_UNICODE

    $s = json_encode($resultArray, JSON_UNESCAPED_UNICODE);
    

  • 如果($s=NULL)
    在这里应该是
    ==
    instead@Adrian . json_encode从不返回
    NULL
    。它返回一个字符串,或FALSE。首先修复此问题,它可能会改变很多事情:)这样做会删除$s值并破坏测试逻辑。输出是:数组([0]=>stdClass对象([FirstName]=>Adrian[LastName]=>Kaczmarek)[1]=>stdClass对象([FirstName]=>Krzysztof[LastName]=>Rózga))空指针$s==null,$s==“”与$s==false相同。请参阅严格等于(==vs.==)
    echo json_last_error();
    echo json_last_error_msg();
    
    $s = json_encode($resultArray, JSON_UNESCAPED_UNICODE);