2009-09-26 35 views
0

我在這裏使用PHP 5。我有以下代碼:在共享服務器上爲「foreach()提供的無效參數」

$data = json_decode($_POST['data']); 
foreach ($data as $obj) { 
...... 

} 

我得到錯誤「的foreach爲無效的論點提供()」與在foreach功能就行了。這隻發生在我的共享服務器帳戶上。在我的本地網絡服務器上一切正常。 $ _POST ['data']包含有效的JSON字符串。的print_r($數據);什麼也沒有顯示......這裏到底怎麼了?

編輯:這真的吹我的腦海裏,但$ _ POST [「數據」]字符串正在使用AJAX發送和我趕上與螢火串並複製到一個JSON測試文件是這樣的:

$data = json_decode('[{"id":3,"name":"John","surname":"Smith","number":6633,"city":"The city","area":"West","street":"West","numar":"15","other":"none"},{"id":3,"name":"John","surname":"Smith","number":6633,"city":"The city","area":"West","street":"West","numar":"15","other":"none"},{"id":3,"name":"John","surname":"Smith","number":6633,"city":"The city","area":"West","street":"West","numar":"15","other":"none"}]'); 
print_r($data); 

它應該是正確的。所以,我會貼得更代碼從功能的煩惱:

function saveData($table) 
{ 
    $data = json_decode($_POST['data']);  

    $db = new MySQL(true); 
    $db->TransactionBegin(); 

    foreach ($data as $obj) { 
    $id = $obj->id; 
    $name = $obj->name; 
} 
} 

檢查了這一點:如果我這樣做:

$data = json_decode('[{"id":3,"name":"John","surname":"Smith","number":6633,"city":"The city","area":"West","street":"West","numar":"15","other":"none"},{"id":3,"name":"John","surname":"Smith","number":6633,"city":"The city","area":"West","street":"West","numar":"15","other":"none"},{"id":3,"name":"John","surname":"Smith","number":6633,"city":"The city","area":"West","street":"West","numar":"15","other":"none"}]'); 
foreach ($data as $obj) { 
...... 

} 

運行完美!因此,似乎有通過電子郵件問題時,我做的事:

$data = json_decode($_POST['data']); 

但$ _ POST [「數據」]輸出一個完美的JSON字符串。這讓我瘋狂。

任何想法?

任何想法?

回答

4

magic_quotes_gpc的...報價從php.net:

上時,所有的'(單引號),「 (雙引號),\(反斜線)和NULL 字符轉義成一個自動 反斜槓。

事實證明魔術引號共享服務器上啓用了。謝謝你的答案。

+4

在共享服務器上啓用魔術引號... – jeroen 2009-09-26 01:32:15

0

json_decode只存在於PHP 5 >= 5.2.0PECL json >= 1.2.0,所以我的猜測是您的託管使用較低的版本。

+0

會不會導致錯誤(確實是一個致命錯誤)調用的理解過程罰款功能之前,甚至達到foreach? – eyelidlessness 2009-09-26 00:54:58

+1

這會在'json_decode()'不存在時拋出一個致命錯誤。 – chaos 2009-09-26 00:55:02

+0

我曾經遇到過這種情況,並且PHP(在共享主機上)也有json_encode函數,但不是PECL,並且沒有提供錯誤。我沒有訪問日誌,所以我不確定這個問題。 – rogeriopvl 2009-09-26 00:59:48

0

$data無效JSON? (無論是畸形的還是空的)

1

var_dump($data)將推測顯示$datanull。從the docs:或返回

NULL,如果JSON不能 解碼如果編碼的數據比遞歸限制更深 。

如果您的共享服務器的行爲特殊,或許它的遞歸限制低於本地服務器。

+0

編輯後。請檢查。 – 2009-09-26 01:05:02

+1

好的。沒有看到有關您的編輯的任何信息會影響我的答案 – chaos 2009-09-26 01:42:01