我目前正在做的工作但我只是觉得有更好的方法,或者更专业的方式来做到这一点。我说的是非常少量的数据,比如一个数字(或几个数字)被保存,以便存储在下拉列表中进行的选择,以便每次重新打开页面时都记住它。我根本没有使用mysql数据库所以它全部保存到文件中。
现在我只需将数字保存到文本文件中以保存所选文件夹,然后在其下方放置其他几个数字以保存所选文件。所有从下拉列表中选择的内容如下:
<form method="POST" action="index.php">
<select onchange="this.form.submit();" name="text">
<option>Select</option>
<option value="first">first</option>
<option value="second">second</option>
<option value="etc">etc</option>
</select>
</form>
然后将它们存储在一个看起来像这样的文本文件中:
7
4
3
更改文件夹或文件后,使用以下代码进行更改:
function saveFile($line,$data,$savepath) {
$trace=file($savepath);$trace[$line]=$data;
file_put_contents($savepath,$trace);
}
if(isset($_POST['text'])) {
$changed=$_POST['text'];
saveFile($selected,$changed."\n",$savepath);
}
代码选择要保存到的文本文件的哪一行。也许有更好的方式或完全不同的东西?虽然我不想使用sql或类似的东西。
答案 0 :(得分:1)
冒着忽略以下几点的贬值的风险:
虽然我不想使用sql或类似的东西
您不需要为此运行庞大的数据库系统。 SQLite的某些内容让您拥有数据库的功能,而不会产生巨大的开销。 SQLite数据库本质上是一种特定类型的文件,包含您配置的所有关系,但比您正在使用的平面文件结构更灵活。
答案 1 :(得分:0)
对我来说,看起来你试图将少量值从页面加载持续到页面加载。如果只需要在UI中而不是在服务器端,我会将数据保存在cookie中,但这是一个相当过时的问题解决方案,同样使用本地存储应该为你做的伎俩。抱歉JavaScript解决方案而不是PHP。示例代码:
localStorage.setItem(&#34; attr&#34;,&#34; value&#34;);
警告(&#34; attr:&#34; + localStorage.getItem(&#34; attr&#34;));
答案 2 :(得分:0)
另一个想法是将解析为Json,序列化(关联)数组或类似数据的数据保存到文件中。这样您就可以命名值,并且如果在两年内再次打开该文件,您就知道系统中的哪个函数属于哪个值。
但同样,如果这极大地增加了项目的复杂性或者它开始停止有效(因为存储的大量数据),那么优化的数据库就像其他已经推荐的那样,是唯一的方法。
答案 3 :(得分:0)
为了将少量数据保存到文件中,我建议将数据作为键/值对存储在数组中,然后序列化数组(或将其转换为JSON),然后保存。
E.g。
$folderValue = 5;
$file1Value = 6;
$file2Value = 7;
/**
* Saving data
*/
$data = array(
'folder' => $folderValue,
'file1' => $file1Value,
'file2' => $file2Value,
);
file_put_contents($filename , serialize(data));
/**
* Getting data (this will be the same array you
* saved to file at an earlier point) which you can
* iterate over or grab values via key.
*/
$data = unserialize(file_get_contents($filename));
foreach ($data as $key => $value) {
echo "key {$key} is {$value}\n";
// e.g. "key folderValue is 5";
}
echo $data['folder'] . "\n";
// e.g. "5";
SQL仍然是存储应用程序状态的更好选择。平面文件很差,因为它们随着时间的推移变得难以管理,但如果您使用文件,则键=&gt;值映射对于可读性非常重要。
如果您需要低开销的SQL(低配置,无后台服务器运行),SQLite可能是一个很好的选择,但它有其自身的局限性(低性能,不规模)。
PHP有关于序列化数据的良好文档: http://php.net/manual/en/function.serialize.php http://php.net/manual/en/function.unserialize.php
Json是数据序列化的另一种好格式。另请参阅json_encode和json_decode。
答案 4 :(得分:0)
看看Rocket-Store ...