Technisch gezien ga je daarmee de verkeerde kant op. MySQL wordt gebruikt om elk van uw ID/VALUE afzonderlijk op te slaan. Om uw code NIET te veranderen, zullen we eerst naar uw oplossing kijken, maar dan zal ik de "betere" manier uitleggen om dit te doen.
Eerst moet u uw JSON als een variabele maken, niet als onderdeel van uw SQL:
mysql_query("INSERT INTO text (data) VALUES (".mysql_real_escape_string(array(json_encode('id' => $uid, 'value' => 'yes'))).")");
in plaats van
mysql_query("INSERT INTO text (data) VALUES (json_encode('id' => $uid, 'value' => yes))");
Met dit eerste deel kunt u in ieder geval de gegevens correct in mysql zetten. Ik ga ervan uit dat uw tafel een ID heeft en dat u deze gaat gebruiken om bij te werken of te verwijderen
Wanneer u uw gegevens ophaalt, kunt u json_decode
de $row['data']
om uw gegevens terug uit de rij te halen en ermee aan de slag te gaan. Om het bij te werken, doe je gewoon:
mysql_query("UPDATE text SET data = "'.mysql_real_escape_string(json_encode($myJsonToBeData)).'" WHERE rowid = '.$myrowid)
Nu, voor de JUISTE manier om dit te doen:
De juiste manier om dit te doen is om deze velden in uw tabel te hebben:ID, JSONID, JSONVALUE en in plaats daarvan deze SQL te gebruiken:
SELECT * FROM text WHERE id = $rowid
INSERT INTO text VALUES(NULL, $jsonid, $jsonvalue)
UPDATE text SET jsonid = $jsonid, jsondata = $jsondata
Dit is vrij eenvoudig, maar u kunt een willekeurig aantal vermeldingen in uw database hebben die deze doorzoekbaar, geïndexeerd, sorteerbaar, doorzoekbaar, enz. maken...