Tecnicamente, stai andando nella direzione sbagliata con quello. MySQL viene utilizzato per memorizzare ciascuno dei tuoi ID/VALUE separatamente. Per NON modificare il codice, esamineremo prima la tua soluzione, ma poi ti spiegherò il modo "migliore" per farlo.
Innanzitutto, devi creare il tuo JSON come variabile, non parte del tuo SQL:
mysql_query("INSERT INTO text (data) VALUES (".mysql_real_escape_string(array(json_encode('id' => $uid, 'value' => 'yes'))).")");
invece di
mysql_query("INSERT INTO text (data) VALUES (json_encode('id' => $uid, 'value' => yes))");
Questa prima parte ti consentirà almeno di inserire correttamente i dati in mysql. Presumo che la tua tabella abbia un ID e che la utilizzerai per aggiornare o eliminare
Quando recuperi i tuoi dati, puoi json_decode
il $row['data']
per recuperare i tuoi dati dalla riga e lavorarci. Per aggiornarlo, fai semplicemente:
mysql_query("UPDATE text SET data = "'.mysql_real_escape_string(json_encode($myJsonToBeData)).'" WHERE rowid = '.$myrowid)
Ora, per il modo GIUSTO per farlo:
Il modo giusto per farlo sarebbe avere questi campi nella tabella:ID, JSONID, JSONVALUE e utilizzare invece questo SQL:
SELECT * FROM text WHERE id = $rowid
INSERT INTO text VALUES(NULL, $jsonid, $jsonvalue)
UPDATE text SET jsonid = $jsonid, jsondata = $jsondata
Questo è piuttosto semplice, ma ti permetterà di avere un numero qualsiasi di voci nel tuo database che lo rendono ricercabile, indicizzato, ordinabile, interrogabile, ecc...