Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

php làm thế nào để lưu trữ và đọc dữ liệu json thông qua mysql?

Về mặt kỹ thuật, bạn đang đi sai đường với điều đó. MySQL được sử dụng để lưu trữ riêng biệt từng ID / VALUE của bạn. Vì lợi ích của việc KHÔNG thay đổi mã của bạn, chúng tôi sẽ xem xét giải pháp của bạn trước nhưng sau đó tôi sẽ giải thích cách làm "tốt hơn".

Trước tiên, bạn cần đặt JSON của mình dưới dạng một biến, không phải là một phần của SQL:

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

thay vì

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

Phần đầu tiên này sẽ cho phép bạn ít nhất thay vào đó dữ liệu chính xác vào mysql. Tôi đang ASSUMING bảng của bạn có một ID và bạn sẽ sử dụng nó để cập nhật hoặc xóa

Khi truy xuất dữ liệu của mình, bạn có thể json_decode $row['data'] để lấy lại dữ liệu của bạn từ hàng và làm việc với nó. Để cập nhật nó, chỉ cần làm:

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

Bây giờ, để có cách ĐÚNG để thực hiện việc này:

Cách phù hợp để thực hiện việc này là đưa các trường này vào bảng của bạn:ID, JSONID, JSONVALUE và sử dụng SQL này thay thế:

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

Điều này khá cơ bản, nhưng nó sẽ cho phép bạn có bất kỳ số lượng mục nhập nào trong cơ sở dữ liệu của mình để có thể tìm kiếm, lập chỉ mục, có thể sắp xếp, có thể truy vấn, v.v.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn mysql đơn giản để kiểm tra xem hàng có tồn tại hay không

  2. PHP strtotime ():ngày hiển thị '1970-01-01' sau khi chuyển đổi

  3. Hộp thả xuống phụ thuộc CakePHP 3

  4. Giá trị null của PHP không bằng giá trị null của MySQL?

  5. Cách tự động hóa quá trình di chuyển từ MySQL độc lập sang Galera Cluster bằng Ansible