Mysql
 sql >> Datenbank >  >> RDS >> Mysql

php wie speichert und liest man json daten über mysql?

Technisch gesehen gehst du damit in die falsche Richtung. MySQL wird verwendet, um jede Ihrer IDs/Werte separat zu speichern. Um Ihren Code NICHT zu ändern, schauen wir uns zuerst Ihre Lösung an, aber dann erkläre ich den "besseren" Weg, es zu tun.

Zuerst müssen Sie Ihren JSON als Variable erstellen, nicht als Teil Ihres SQL:

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

statt

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

Dieser erste Teil wird es Ihnen zumindest ermöglichen, die Daten korrekt in mysql einzufügen. Ich gehe davon aus, dass Ihre Tabelle eine ID hat und dass Sie sie zum Aktualisieren oder Löschen verwenden werden

Wenn Sie Ihre Daten abrufen, können Sie json_decode die $row['data'] um Ihre Daten aus der Reihe zurückzubekommen und damit zu arbeiten. Um es zu aktualisieren, tun Sie einfach:

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

Nun, für den RICHTIGEN Weg, dies zu tun:

Der richtige Weg, dies zu tun, wäre, diese Felder in Ihrer Tabelle zu haben:ID, JSONID, JSONVALUE und stattdessen diese SQL zu verwenden:

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

Dies ist ziemlich einfach, aber es ermöglicht Ihnen, eine beliebige Anzahl von Einträgen in Ihrer Datenbank zu haben, die sie durchsuchbar, indiziert, sortierbar, abfragbar usw. machen.