Mysql
 sql >> Base de données >  >> RDS >> Mysql

php comment stocker et lire des données json via mysql ?

Techniquement, vous vous trompez de chemin. MySQL est utilisé pour stocker chacun de vos ID/VALEUR séparément. Afin de NE PAS changer votre code, nous examinerons d'abord votre solution, puis j'expliquerai la "meilleure" façon de le faire.

Tout d'abord, vous devez faire de votre JSON une variable, et non une partie de votre SQL :

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

au lieu de

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

Cette première partie vous permettra au moins de placer correctement les données dans mysql. Je suppose que votre table a un ID et que vous l'utiliserez pour mettre à jour ou supprimer

Lorsque vous récupérez vos données, vous pouvez json_decode le $row['data'] pour récupérer vos données de la ligne et travailler avec. Pour le mettre à jour, faites simplement :

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

Maintenant, pour la BONNE façon de procéder :

La bonne façon de procéder serait d'avoir ces champs dans votre table :ID, JSONID, JSONVALUE et d'utiliser ce SQL à la place :

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

C'est assez basique, mais cela vous permettra d'avoir n'importe quel nombre d'entrées dans votre base de données qui la rendent consultable, indexée, triable, interrogeable, etc...