2016-12-31 45 views
0

我有存儲在變量中的JSON數據,該變量是特定用戶的一組權限。但是,JSON數據不存儲在文件中,它只是在數據庫列中。更新存儲在數據庫中的JSON數據

我試着尋找更新權限(這是真的還是假的)的方法,但到目前爲止我還沒有運氣。目前,我對此有所影響;

原始JSON數據...

{ 
    "permissions": { 
     "permission_1": true, 
     "permission_2": false 
    } 
} 

得到它的數據庫...

$permissions = json_decode($data, true); 

如何(使用PHP)更新JSON數據說,更新權限2爲真?當它出現在數據庫中並將其放入數組中時,我正在使用json_decode(),但這僅用於使用它。之後,我失去了如何更新價值。

+0

您需要運行SQL(假設)查詢以更新數據庫中的值。這個問題對於一個正確的答案來說太寬泛了,但是你在正確的軌道上。看看'json_encode','json_decode','serialize','unserialize'。更新數據後,您可以運行查詢將其保存在數據庫中。 –

+0

我是在馬丁的回答之後。我需要的是更新變量,然後再次編碼JSON數據。所有其他問題都使用它更新外部文件的場景。 –

回答

0

爲了:從數據庫

  • 提取列數據。

    "SELECT column FROM table WHERE id = 1 LIMIT 1"  
    
  • JSON_decode數據爲一組PHP值/對象/陣列/不管。

    $array = json_decode($OutputRow['column'],true); 
    
  • 更新需要更新的值。

    $array['permissions']['permission2'] = true; 
    
  • 重新編寫使用JSON_encode JSON字符串。

    $data = json_encode($array); 
    
  • 用新的JSON_encoded字符串更新數據庫(SQL?)。

    "UPDATE table SET column = :data WHERE id = 1 LIMIT 1" 
    

我的示例使用PDO和MySQL通過參考,但不進入有關數據庫交互的任何細節,你沒有給出任何細節,你是如何達到你的數據庫。這是只有一個ballpark如何做列出的粗略的例子。

+0

看起來很簡單,但只是無法弄清楚這一點。謝謝,那就是我所追求的。 –

+0

@DanielJames它總是很簡單......一旦你知道。別擔心。 '':-) – Martin