Mysql
 sql >> Baza danych >  >> RDS >> Mysql

php jak przechowywać i czytać dane json przez mysql?

Technicznie rzecz biorąc, idziesz w złym kierunku. MySQL służy do oddzielnego przechowywania każdego z Twoich ID/WARTOŚCI. Aby NIE zmieniać kodu, najpierw przyjrzymy się Twojemu rozwiązaniu, ale potem wyjaśnię „lepszy” sposób na zrobienie tego.

Najpierw musisz uczynić swój JSON zmienną, a nie częścią twojego SQL:

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

zamiast

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

Ta pierwsza część pozwoli ci przynajmniej zamiast danych poprawnie w mysql. ZAKŁADAM, że Twój stół ma identyfikator i będziesz go używać do aktualizowania lub usuwania

Po pobraniu danych możesz json_decode $row['data'] aby odzyskać dane z wiersza i pracować z nimi. Aby go zaktualizować, po prostu wykonaj:

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

Teraz, aby to zrobić WŁAŚCIWY sposób:

Właściwym sposobem, aby to zrobić, byłoby umieszczenie tych pól w tabeli:ID, JSONID, JSONVALUE i użycie tego kodu SQL:

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

Jest to dość proste, ale pozwoli Ci mieć dowolną liczbę wpisów w Twojej bazie danych, które sprawią, że będzie można ją przeszukiwać, indeksować, sortować, przeszukiwać itp...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ograniczanie portu MySQL 3306 do hosta lokalnego za pomocą IPTABLES

  2. jak losowo pobierać pytania z bazy danych?

  3. MySQL:dlaczego varchar(254), a nie varchar(255)?

  4. Wypełnianie formularzy html danymi mysql przy użyciu php null

  5. Jak uzyskać nazwę nadzorcy zamiast UserID + INNER JOIN w MYSQL?