【发布时间】:2017-05-26 14:16:50
【问题描述】:
我有一个名为“plan_test”的 MySQL 数据库,其中包含名为 (5a, 5b, 5c...) 的表。这些表具有相同的列和多行。我已经设置了一个有权对数据库执行所有操作的用户。这是我的 php 代码,它应该返回一个 json 格式的字符串,我可以稍后阅读:
<?php
$servername = "localhost";
$username = "tester";
$password = "abc123";
$dbname = "plan_test";
$sql = "select * from plan_test.5a";
$con = mysqli_connect($servername,$username,$password,$dbname);
mysqli_set_charset($con,"utf-8");
$result = mysqli_query($con,$sql);
$response = array();
while($row = mysqli_fetch_array($result)){
array_push($response,array("Klasse"=>$row[0],"Tag"=>$row[4],"Monat"=>$row[5],"Stundenanfang"=>$row[7],"Stundenende"=>$row[8],"Art"=>$row[9],"Fach"=>$row[10],"Lehrer"=>$row[11],"sFach"=>$row[12],"sLehrer"=>$row[13],"Raum"=>$row[14],"Bemerkung"=>$row[15]));
}
echo json_encode(array("test"=>$response));
mysqli_close($con);
?>
当我运行时,我得到了一个空白站点
var_dump($response);
我明白了:
array(3) {
[0]=>
array(12) {
["Klasse"]=>
string(2) "5a"
["Tag"]=>
string(2) "19"
["Monat"]=>
string(1) "5"
["Stundenanfang"]=>
string(1) "1"
["Stundenende"]=>
string(1) "2"
["Art"]=>
string(10) "Vertretung"
["Fach"]=>
string(1) "E"
["Lehrer"]=>
string(2) "VH"
["sFach"]=>
string(1) "E"
["sLehrer"]=>
string(2) "AL"
["Raum"]=>
string(3) "113"
["Bemerkung"]=>
string(1) "�"
}
[1]=>
array(12) {
["Klasse"]=>
string(2) "5a"
["Tag"]=>
string(2) "19"
["Monat"]=>
string(1) "5"
["Stundenanfang"]=>
string(1) "3"
["Stundenende"]=>
string(1) "4"
["Art"]=>
string(10) "Vertretung"
["Fach"]=>
string(4) "SCHW"
["Lehrer"]=>
string(2) "WE"
["sFach"]=>
string(4) "SCHW"
["sLehrer"]=>
string(2) "TO"
["Raum"]=>
string(3) "AH2"
["Bemerkung"]=>
string(1) "�"
}
[2]=>
array(12) {
["Klasse"]=>
string(2) "5a"
["Tag"]=>
string(2) "19"
["Monat"]=>
string(1) "5"
["Stundenanfang"]=>
string(1) "3"
["Stundenende"]=>
string(1) "4"
["Art"]=>
string(10) "Vertretung"
["Fach"]=>
string(4) "SCHW"
["Lehrer"]=>
string(2) "RR"
["sFach"]=>
string(4) "SCHW"
["sLehrer"]=>
string(2) "WI"
["Raum"]=>
string(3) "AH1"
["Bemerkung"]=>
string(1) "�"
}
}
由于某种原因,该数组未编码为 json 格式。 如何将此数组编码为 json 字符串?
顺便说一句,来自“Bemerkung”的未定义字符串应该在那里。
【问题讨论】:
-
回声 $json = json_encode($response); ?
-
var_dump()在哪里? -
@Blueline nope..
-
@MrKen 在编码之前和编码之后都试过了。没有任何改变。
-
尝试在末尾添加
echo json_last_error_msg();。您的 var_dump 输出中有一些损坏的字符,它们可能是无效的 UTF-8。