Đối với json_encode
để trả về một mảng JSON của mảng, bạn cần một mảng được lập chỉ mục số.
Điều này có thể đạt được bằng hàm chung sau:
function SqlSelectToJsonTable($result,$withNames=false){
// result a mysqli::query object,
// withNames: boolean, should the column names be returned as first row
$return_arr = array();
echo $result->num_rows;
if ($result->num_rows > 0){
if($withNames == true){
$return_arr[0] = array();
$fields = $result->fetch_fields();
foreach ($fields as $field){
echo "column: ".$field->name." ";
array_push($return_arr[0],$field->name);
}
}
while($row = $result->fetch_assoc()) {
$return_arr[]= array_values($row);
}
} else {
echo "0 results";
}
return json_encode($return_arr);
}
Được sử dụng như sau:
<?php
$servername = "localhost";
$username = "user";
$password = "password";
$dbname = "test";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT id, title FROM Posts";
$result = $conn->query($sql);
$jsonTable = SqlSelectToJsonTable($result);
echo '<br/>'.$jsonTable;
echo "<script type=\"text/javascript\">
var jsTable = JSON.parse('".$jsonTable."');
</script>";
$conn->close();
?>
Trong đó jsTable thực sự sẽ là một mảng của các mảng. Lưu ý tùy chọn withNames
cho phép thêm tên cột làm hàng đầu tiên, hữu ích nếu bạn cố gắng chuyển mảng này sang javascript cho google hình dung
.