我在项目中从数据库中获取数据(当前只有一行)并将其写入文件中,我得到了以下代码
<?php
$conn = mysqli_connect($servername, $username, $password, $dbname) or die("Connection failed: " . mysqli_connect_error());
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
mysqli_set_charset($conn,"utf8");
$sqlTot = $sqlRec = "";
$sql = "SELECT * FROM `prisoners` ";
$sqlTot .= $sql;
$sqlRec .= $sql;
$sqlRec .= " ORDER BY id";
$queryTot = mysqli_query($conn, $sqlTot) or die("database error:". mysqli_error($conn));
$queryRecords = mysqli_query($conn, $sqlRec) or die("error to fetch prisoner data");
$data = array();
//iterate on results row and create new index array of data
while( $row = mysqli_fetch_row($queryRecords) ) {
$data[] = $row;
}
file_put_contents("data.txt", print_r($data, true));
?>
但是,这将按如下方式写入特定行
Array
(
[0] => Array
(
[0] => 1
[1] => Παπαευθυμίου (ή Παπαδόπουλος)
[2] => Χαράλαμπος
)
)
而我希望它输出它
{
"data": [
{
"id": "1",
"lastname": "Παπαευθυμίου (ή Παπαδόπουλος)",
"firstname": "Χαράλαμπος"
}
]
}
有没有办法实现这个目标?
您可以使用mysqli_fetch_assoc()
获取关联数组以获取列名称。
然后使用json_encode()
显示您想要的:
$data = array();
//iterate on results row and create new index array of data
while( $row = mysqli_fetch_assoc($queryRecords) ) {
$data['data'][] = $row;
}
file_put_contents("data.txt", json_encode($data, JSON_PRETTY_PRINT));
编辑,如下面的评论中所示(对于希腊语(unicode)字符):
file_put_contents("data.txt", json_encode($data,
JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES));
您可以使用qazxsw poi方法来实现此目的:
json_encode()