2015-12-03 47 views
3

這我得到我的JSON的結構與此類似question如何使用Node.js中的MySQL查詢更新MySQL數據庫中的JSON記錄?

var data = { 
type: "binary", 
choices: [ 
{ 
    choice: "No", 
    answers: 18 
}, 
{ 
    choice: "Yes", 
    answers: 11 
} 
    ], 
    tags: { 
    2851: "road", 
    8685: "had", 
    10978: "heard" 
    } 
}; 

而且我發現JSON記錄的使用MySQL查詢插入用Node.js的在同一個問題的答案。

是的,我可以通過獲取整個記錄更新記錄,更新記錄並用更新的記錄替換舊記錄。

但是在這裏我的問題是「我可以在不下載完整的json的情況下更新這些數據庫中的json記錄並根據JSON中的一個鍵更新這些記錄嗎?」

注意:這僅僅是演示目的:如果我的田間名字是jsonData

"Update tableName set jsonData.choices.answers = 20 where data.choices.choice = 18 and id = 1";  

希望你能理解我的情況更新基於一個關鍵的JSON記錄一個值。

任何概念上的建議將不勝感激,如果有演示代碼比它將是非常有用的。

+0

你是什麼JSON的來源是什麼?一個URL或變量?你需要完整的對象來遍歷。只挑選部分對象可能是不可能的。但是,如果它的URL和它只允許根據請求查詢參數獲得某些特定的內容,那麼它可以完成。 –

+0

可以,如果答案是PHP? – thepiyush13

+0

JSON的來源如所描述的那樣是可變的。所有的鍵都是我的變量中的必需鍵。很多用戶會同時觸發該更新查詢的可能性很高。所以有可能只有最新的更新會影響數據庫。沒有包含JSON的URL參數。 @AshishChoudhary –

回答

0

的Json解碼,將其轉換爲一個數組,訪問數組元素和附加到查詢數據:

$a = json_decode($data); 
"Update tableName set".$a->col1." =20......." 

PHP的json_decode函數採用JSON字符串並將其轉換成一個 PHP變量。通常,JSON數據將表示一個JavaScript 數組或對象字面值,json_decode將轉換爲一個PHP 數組或對象。

http://www.dyn-web.com/tutorials/php-js/json/decode.php

+0

在這裏,您首先從tableview中選擇該記錄,並將其解析爲php變量並更新記錄。對?。如果有20個用戶同時使用相同的方法,那麼我們可以採取簡單和小型的情況,以便可能同時觸發一個或多個記錄,因此可能不會受到影響。對?在這裏,我希望對該記錄進行直接更新查詢,所以如果100個用戶在同一次100次操作之後觸發了該數據,那麼數據應該是準確的。只有一個UPDATE查詢沒有SELECT查詢記錄。 –

+0

這個問題對我來說並不是很清楚,但如果你在談論併發更新衝突時,在使用mysql的情況下,它使用可重複讀取隔離級別,所以如果兩個事務嘗試更新同一行,第二個事務必須等待第一個事務一個提交或回滾,因此無論時間如何,所有記錄都會被插入。反正好點,謝謝 – thepiyush13

相關問題