Mysqli数据到文件转换

问题描述 投票:0回答:2

我在项目中从数据库中获取数据(当前只有一行)并将其写入文件中,我得到了以下代码

<?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": "Χαράλαμπος"
    }
  ]
}

有没有办法实现这个目标?

php json
2个回答
1
投票

您可以使用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));

-1
投票

您可以使用qazxsw poi方法来实现此目的:

json_encode()
© www.soinside.com 2019 - 2024. All rights reserved.