sql >> Database teknologi >  >> RDS >> Mysql

php hvordan gemmer og læser jeg json-data via mysql?

Teknisk går du den forkerte vej med det. MySQL bruges til at gemme hvert af dine ID/VÆRdier separat. Af hensyn til IKKE at ændre din kode vil vi først se på din løsning, men så vil jeg forklare den "bedre" måde at gøre det på.

Først skal du lave din JSON som en variabel, ikke en del af din SQL:

mysql_query("INSERT INTO text (data) VALUES (".mysql_real_escape_string(array(json_encode('id' => $uid, 'value' => 'yes'))).")");

i stedet for

mysql_query("INSERT INTO text (data) VALUES (json_encode('id' => $uid, 'value' => yes))");

Denne første del vil tillade dig i det mindste i stedet at dataene korrekt ind i mysql. Jeg går ud fra, at dit bord har et id, og at du vil bruge det til at opdatere eller slette

Når du henter dine data, kan du json_decode $row['data'] at få dine data tilbage fra rækken og arbejde med dem. For at opdatere den skal du blot gøre:

mysql_query("UPDATE text SET data = "'.mysql_real_escape_string(json_encode($myJsonToBeData)).'" WHERE rowid = '.$myrowid)

Nu, for den RIGTIGE måde at gøre dette på:

Den rigtige måde at gøre dette på ville være at have disse felter i din tabel:ID, JSONID, JSONVALUE og bruge denne SQL i stedet:

SELECT * FROM text WHERE id = $rowid
INSERT INTO text VALUES(NULL, $jsonid, $jsonvalue)
UPDATE text SET jsonid = $jsonid, jsondata = $jsondata

Dette er ret grundlæggende, men det vil give dig mulighed for at have et hvilket som helst antal poster i din database, der gør den søgbar, indekseret, sorterbar, forespørgbar osv...



  1. ScaleGrid DigitalOcean Support til MySQL, PostgreSQL og Redis™ nu tilgængelig

  2. Sådan tilføjes Active Directory-brugergruppe som login i SQL Server

  3. ScaleGrid shortlistet til Cloud Awards-programmet 2017-2018

  4. Neo4j Query Language - Cypher