sql >> Databasteknik >  >> RDS >> Mysql

php hur man lagrar och läser json-data via mysql?

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...



  1. Hur man migrerar MySQL från Amazon EC2 till ditt on-prem datacenter utan driftstopp

  2. Oracle-funktionsexempel (returnummer)

  3. Introduktion till temporära tabeller i SQL Server

  4. MySQL lagrad procedur orsakade `Kommandon ur synk`