我有这段代码在服务器上创建一个json文件并将表单数据保存到该jason文件。使用php更新Json文件的数据
问题是每当我点击提交按钮时,表单数据会追加到json文件上的现有数据。
我想更新它不会创建更多的副本行。
这里是代码,你可以查看它。
任何帮助将不胜感激。
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
move_uploaded_file($_FILES["Photo"]["tmp_name"],"images/".$_POST['Photo']);
$filters=array(
"FirstName",
"LastName",
"Photo",
"MobilePhone",
"MobilePhoneProvider",
"HomePhone",
"HomePhoneProvider",
"WorkPhone",
"WorkPhoneProvider"
);
$final=array();
foreach ($filters as $filter) {
$final[$filter]=$_POST[$filter]?$_POST[$filter]:"";
}
$final["PhoneNumber"]=array(
array(
"MobilePhone"=>$final["MobilePhone"],
"Provider"=>$final["MobilePhoneProvider"],
),
array(
"HomePhone"=>$final["HomePhone"],
"Provider"=>$final["HomePhoneProvider"],
),
array(
"WorkPhone"=>$final["WorkPhone"],
"Provider"=>$final["WorkPhoneProvider"],
)
);
$unsets=array(
"MobilePhone",
"MobilePhoneProvider",
"HomePhone",
"HomePhoneProvider",
"WorkPhone",
"WorkPhoneProvider"
);
foreach ($unsets as $unset) {
unset($final[$unset]);
}
$json = json_encode($final);
$file = 'entries.json';
file_put_contents($file, $json, FILE_APPEND);
exit;
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Contact</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
First Name: <input type="text" name="FirstName"><br>
Last Name: <input type="text" name="LastName"><br>
Photo: <input type="file" name="Photo"><br>
Mobile Phone: <input type="tel" name="MobilePhone"><br>
Mobile Phone Provider: <input type="text" name="MobilePhoneProvider"><br>
Home Phone: <input type="tel" name="HomePhone"><br>
Home Phone Provider: <input type="text" name="HomePhoneProvider"><br>
Work Phone: <input type="tel" name="WorkPhone"><br>
Work Phone Provider: <input type="text" name="WorkPhoneProvider"><br>
<input type="submit">
</form>
</body>
</html>
尝试改变'file_put_contents($文件$ JSON,FILE_APPEND);''到file_put_contents($文件$ JSON);'具体根据[文档用于'FILE_APPEND'标志](HTTP:// WWW .php.net/manual/en/function.file-put-contents.php) - >'如果文件名已经存在,请将数据附加到文件中,而不是覆盖文件。' – Sean
是的,这是非常快速的解决方案。谢谢 –