Tekniskt sett går du fel med det. MySQL används för att lagra varje ID/VÄRDE separat. För att INTE ändra din kod kommer vi att titta på din lösning först, men sedan ska jag förklara det "bättre" sättet att göra det.
Först måste du göra din JSON som en variabel, inte en del av din SQL:
mysql_query("INSERT INTO text (data) VALUES (".mysql_real_escape_string(array(json_encode('id' => $uid, 'value' => 'yes'))).")");
istället för
mysql_query("INSERT INTO text (data) VALUES (json_encode('id' => $uid, 'value' => yes))");
Denna första del kommer att tillåta dig att åtminstone istället data korrekt till mysql. Jag ANTAR att ditt bord har ett ID och att du kommer att använda det för att uppdatera eller ta bort
När du hämtar din data kan du json_decode
$row['data']
för att få tillbaka din data från raden och arbeta med den. För att uppdatera den gör du bara:
mysql_query("UPDATE text SET data = "'.mysql_real_escape_string(json_encode($myJsonToBeData)).'" WHERE rowid = '.$myrowid)
Nu, för RÄTT sätt att göra detta:
Det rätta sättet att göra detta skulle vara att ha dessa fält i din tabell:ID, JSONID, JSONVALUE och använda denna SQL istället:
SELECT * FROM text WHERE id = $rowid
INSERT INTO text VALUES(NULL, $jsonid, $jsonvalue)
UPDATE text SET jsonid = $jsonid, jsondata = $jsondata
Detta är ganska grundläggande, men det kommer att tillåta dig att ha hur många poster som helst i din databas som gör den sökbar, indexerad, sorterbar, sökbar, etc...