我正在尝试从数据库中检索一个数组,但始终获取返回的NULL值或什么都没有。

我尝试使用UTF-8 Unicode,多种不同方法和托管站点来转换整个数据库。

我通过print_r和json_encode获得的响应如下:

Array
(
[success] =>
[0] => Array
    (
        [lat] =>
        [lng] =>
        [value] =>
    )

[1] => Array
    (
        [lat] =>
        [lng] =>
        [value] =>
    )

[2] => Array
    (
        [lat] =>
        [lng] =>
        [value] =>
    )

[3] => Array
    (
        [lat] =>
        [lng] =>
        [value] =>
    )

[4] => Array
    (
        [lat] =>
        [lng] =>
        [value] =>
    )

)

0No error{"success":false,"0":{"lat":null,"lng":null,"value":null},"1"{"lat":null,"lng":null,"value":null},"2":{"lat":null,"lng":null,"value":null},"3":{"lat":null,"lng":null,"value":null},"4":{"lat":null,"lng":null,"value":null}}


我的PHP代码:

<?php
header('Content-Type: application/json');
$con = mysqli_connect("aaa", "bbb", "ccc", "ddd");

//Sets charset for JSON parsing
//no need anymore, database is utf8_unicode_ci already
//$charset = mysql_query("SET CHARACTER SET utf8");
//utf8_encode($arrItem);

$statement = mysqli_prepare($con, "SELECT * FROM markers    ORDER BY marker_id");
mysqli_stmt_execute($statement)  or die(mysqli_error($con));

$arrRows = array();
$arryItem = array();
$arrRows["success"] = false;
$arryItem["success"] = false;

mysqli_stmt_bind_result($marker_id,$lat,$lng,$value);

    while(mysqli_stmt_fetch($statement)) {
      $arrRows[] = compact('marker_id','lat','lng','value');
    }

    print_r($arrRows);
    echo json_last_error();
    echo json_last_error_msg();
    echo json_encode($arrRows);
?>


应该返回的值是:

php - PHP JSON_Encode()使用UTF-8返回NULL(数组中的数组)-LMLPHP

非常感谢所有帮助,确实需要解决此问题!

如果有些事情我没有很好地解释,或者您需要其他信息,请告诉我。我可以发布我在while循环中尝试过的其他方法,但被告知使用compact()是实现此目的的最佳方法。

最佳答案

当以程序方式使用它时,需要将$statement作为第一个参数传递给mysqli_stmt_bind_result()调用。

关于php - PHP JSON_Encode()使用UTF-8返回NULL(数组中的数组),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40465953/

10-12 00:26
查看更多