Technicznie rzecz biorąc, idziesz w złym kierunku. MySQL służy do oddzielnego przechowywania każdego z Twoich ID/WARTOŚCI. Aby NIE zmieniać kodu, najpierw przyjrzymy się Twojemu rozwiązaniu, ale potem wyjaśnię „lepszy” sposób na zrobienie tego.
Najpierw musisz uczynić swój JSON zmienną, a nie częścią twojego SQL:
mysql_query("INSERT INTO text (data) VALUES (".mysql_real_escape_string(array(json_encode('id' => $uid, 'value' => 'yes'))).")");
zamiast
mysql_query("INSERT INTO text (data) VALUES (json_encode('id' => $uid, 'value' => yes))");
Ta pierwsza część pozwoli ci przynajmniej zamiast danych poprawnie w mysql. ZAKŁADAM, że Twój stół ma identyfikator i będziesz go używać do aktualizowania lub usuwania
Po pobraniu danych możesz json_decode
$row['data']
aby odzyskać dane z wiersza i pracować z nimi. Aby go zaktualizować, po prostu wykonaj:
mysql_query("UPDATE text SET data = "'.mysql_real_escape_string(json_encode($myJsonToBeData)).'" WHERE rowid = '.$myrowid)
Teraz, aby to zrobić WŁAŚCIWY sposób:
Właściwym sposobem, aby to zrobić, byłoby umieszczenie tych pól w tabeli:ID, JSONID, JSONVALUE i użycie tego kodu SQL:
SELECT * FROM text WHERE id = $rowid
INSERT INTO text VALUES(NULL, $jsonid, $jsonvalue)
UPDATE text SET jsonid = $jsonid, jsondata = $jsondata
Jest to dość proste, ale pozwoli Ci mieć dowolną liczbę wpisów w Twojej bazie danych, które sprawią, że będzie można ją przeszukiwać, indeksować, sortować, przeszukiwać itp...