2013-02-13 25 views
0

我將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得到不同的結果,其中沒有一個是我所期待的結果。有任何想法嗎?

+0

存儲數據有更好的方法 - 如果MySQL太大又沉重,請嘗試使用SQLite。用這樣的JSON搞砸會讓你頭疼。 – duskwuff 2013-02-14 07:33:25

回答

1

那麼你還沒有定義變量$json。對於所有PHP知道,$json爲空。你的代碼試圖打開一個文件(閱讀),但該文件爲空!

+0

對不起,這是一個錯字 – smulholland2 2013-02-14 07:30:26