我將json值附加到外部文件。表單數據用ajax和post變量捕獲。我有一個小腳本,用於展開json數據字符串,並嘗試將文件與中間的後置變量(或實際上在末尾)拼合在一起。我在fopen中使用了錯誤的參數嗎?
<?php
$json_file = "data.json";
$json_data = $_POST["newUpload"]."]}";
//something like {"name":"foo","email":"[email protected]"}
$fh = fopen($json_file, 'r+'); //I think this is the problem???
$data = fread($fh, filesize($json_file));
$jsonFrags = explode("]}",$data);
$new_data = implode($json_data,$jsonFrags);
fwrite($fh, $new_data);
fclose($fh);
?>
這是我能想出的讓用戶流失XAMPP和Windows機器的使用非常有限的網絡連接的網站上生長的名單最容易的事情。一次可能一天兩次。
整個JSON看起來是這樣的:
{"uploads": [{"name":"foo","email":"[email protected]","imgurl":"http://placehold.it/50x50"}]}
我將文件數據加載到$data
,並在文件字符串的結尾爆發,「]}」。這樣它總是追加到最後。但它不會爆炸/內爆給我的問題。我可以使用str_replace並獲得相同的結果。運行上面的PHP腳本後,我得到這個data.json:
{"uploads": [{"name":"foo","email":"[email protected]","imgurl":"http://placehold.it/50x50"}]}{"uploads": [{"name":"bar","email":"[email protected]","imgurl":"http://placehold.it/100x100"}]}
我已經能夠改變論據的fopen得到不同的結果,其中沒有一個是我所期待的結果。有任何想法嗎?
存儲數據有更好的方法 - 如果MySQL太大又沉重,請嘗試使用SQLite。用這樣的JSON搞砸會讓你頭疼。 – duskwuff 2013-02-14 07:33:25