Ava*_*lla 7 php mysql sql arrays json
我的PHP代码看起来像这样:
$header = "Content-Type: application/json";
header($header);
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * ...";
$result = $conn->query($sql);
$array_1 = array();
if ($result->num_rows > 0) {
// output data as array
while($row = $result->fetch_assoc()) {
array_push($array_1, $row);
}
}
$conn->close();
print_r($array_1);
Run Code Online (Sandbox Code Playgroud)
这给了我以下输出:
Array
(
[0] => Array
(
[user_email] => test@gmail.com
[order_item_name] => Abonnement
)
[1] => Array
(
[user_email] => test@gmail.com
[order_item_name] => Verlängerung
)
)
Run Code Online (Sandbox Code Playgroud)
此输出是通过电子邮件查询的结果,以便返回产品的名称.在这种情况下,如果我改变print_r有echo json_encode没有出现.这让我相信问题与字符集有关,因为结果不是空的,所以我补充说:
$header = "Content-Type: application/json; charset=utf-8";
header($header);
Run Code Online (Sandbox Code Playgroud)
仍然没有运气.我一直在阅读可能是json*函数被禁用的情况,但是,如果我从我的查询中更改电子邮件,它会显示上面的结果使用print_r和作为json使用echo json_encode完全正常.它必须来自此结果问题的根源,或任何类似的情况.可能是因为结果中的角色ä?这就是我在标题中添加utf-8的原因.
正如我上面所说,如果我更改它的工作电子邮件,但当我使用"test@gmail.com"时它只显示1个结果而不是2.是不是结果没有正确放入数组?我认为没有给出print_r正确格式化查询结果的信息.
有谁知道发生了什么?
json_encode只支持UTF-8编码字符串,所以你必须要编码您order_item_name使用的值或者htmlentities或utf8_encode
foreach($array1 as &$v) {
$v['order_item_name'] = utf8_encode($v['order_item_name']);
}
print json_encode($array1);
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅php json_encode中的德语变音符问题
| 归档时间: |
|
| 查看次数: |
5655 次 |
| 最近记录: |