sql >> Database >  >> RDS >> Mysql

php hoe json-gegevens op te slaan en te lezen via mysql?

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



  1. Een procedure maken in mySql met parameters

  2. Een enkele rij selecteren in MySQL

  3. django.db.utils.OperationalError:(2026, 'SSL-verbindingsfout:SSL_CTX_set_tmp_dh mislukt')

  4. MySQL - Maak een paar waarden uniek