我正在尝试从数据库中检索一个数组,但始终获取返回的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);
?>
应该返回的值是:
非常感谢所有帮助,确实需要解决此问题!
如果有些事情我没有很好地解释,或者您需要其他信息,请告诉我。我可以发布我在while循环中尝试过的其他方法,但被告知使用compact()是实现此目的的最佳方法。
最佳答案
当以程序方式使用它时,需要将$statement
作为第一个参数传递给mysqli_stmt_bind_result()
调用。
关于php - PHP JSON_Encode()使用UTF-8返回NULL(数组中的数组),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40465953/