2014-09-24 34 views
1

我正在向此服務器發送一個包含此數據的JSON數組:使用值(val1,val2,...)獲取JSON鍵/值並更新列(key1,key2,...)中的SQL表格

[{"name":"Dinner","value":"3"}, 
{"name":"Happy_Hour","value":"3"}, 
{"name":"client_id","value":"55"}] 

使用AJAX:

$.ajax({ 
    async: false, 
    url: 'http://****', 
    data: MyJsonArray, 
    dataType: 'jsonp', 
    jsonp: 'callback', 
    jsonpCallback: 'submitCallback', 
    success: function(){ 
     alert("success"); 
    }, 
    error: function(xhr, status, errorThrown){ 
     alert("submit interests error" + status); 
    }, 
    complete: function(){ 
    } 
}); //ajax 

然後,我會喜歡使用PHP每個相應的名稱值更新爲列名的表(「晚餐」和「Happy_Hour」)。通常,我會使用$_GET['Happy_Hour']UPDATE table_name SET Happy_Hour=?, etc_etc=? WHERE id=?,但現在我應該以某種方式遍歷數組以獲取鍵/值。我怎樣才能從使用$_GET['hardcoded_name']獲得這些鍵/值的數組?

EDIT
我所提到的JSON對象實際上是一個陣列,所以我改變它(頂部)。我把它通過調用MyHTMLForm.serializeArray();

+2

對於記錄'$ GET _ ['hardcoded_name']'應該是'$ _GET ['hardcoded_name']' - 錯字。 – 2014-09-24 23:49:09

+0

$ contents = file_get_contents(php:// input); – 2014-09-24 23:56:03

+0

它是一個JSON數組還是一個JSON對象?你說這是兩個。此外,您在問題中顯示的數據不是有效的JSON。 – 2014-09-24 23:56:58

回答

1

如果你不想使用硬編碼的指數,你可以將其放在另一個父:

$.ajax({ 
    data: {data: MyJsonObject}, 
    // ... others 
}); 

然後在PHP腳本,調用父持有人:

<?php 

if(isset($_GET['data'])) { 
    $data = $_GET['data']; 
    foreach($data as $val) { 
     $val['name'] // the particular key Dinner, ,Happy_Hour 
     $val['value'] // the corresponding value 3, 3, 55 
     // rest of insert code 
    } 

} 

?> 
+0

你是否認爲我將不得不爲每個名稱/值對執行UPDATE? – Frumples 2014-09-25 00:34:25

+1

@Frumples沒有,因爲你想要一個動態指數,收集每個密鑰對,並將它們排列起來,那你的問題就對了​​嗎?而不是明確地放置索引名稱,而是獲取動態密鑰對。順便說一下,你甚至嘗試過嗎?或者我還必須回答如何排列它們? – Ghost 2014-09-25 00:36:43

+1

@Frumples他們的方式,如果你要插入他們通過準備好的陳述。你不能綁定這些列,所以你只需要將它們列入白名單,無論如何它的主題脫節 – Ghost 2014-09-25 00:39:56

相關問題