问题描述
我正在从 PHP 创建一个 json 文件,想法是始终插入数据库中的最后一条记录,该记录重写 results.json 文件
<?PHP
require_once __DIR__ . '/sql.PHP';
$system = new System();
$sql= $system->SelectLastData();
$response = array();
$posts = array();
while($row=$sql->fetch(PDO::FETCH_ASSOC))
{
$id=$row['id'];
$name=$row['name'];
$posts[] = array('id'=> $id,'name'=> $name);
}
$response['posts'] = $posts;
$fp = fopen('results.json','w');
fwrite($fp,json_encode($response,JSON_PRETTY_PRINT));
fclose($fp);
?>
到目前为止一切顺利,我获取了最新数据,将其传递给数组并将其保存在 results.json
文件中
{
"posts": [
{
"id": "50","name": "John Smith"
}
]
}
我遇到的问题是在用新的最后数据写入 results.json 文件时,它没有添加它,而是生成一个新的 results.json
文件
我想要的是你重写文件并保存一个新的数据(如示例中所示),你可以帮我解决这个问题。
示例:
{
"posts": [
{
"id": "50","name": "Charlotte Johnson"
},{
"id": "51","name": "emma Jones"
},{
"id": "52","name": "Benjamin Miller"
}
]
}
解决方法
从文件中获取现有数据。向现有数据添加新数据。保存文件。
$data = json_decode(file_get_contents('results.json'));
while($row=$sql->fetch(PDO::FETCH_ASSOC))
{
$data->posts[] = array('id'=> $row['id'],'name'=> $row['name']);
}
file_put_contents('results.json',json_encode($data,JSON_PRETTY_PRINT));
根据需要添加健全性检查。例如。如果文件还不存在。