การเก็บ JSON ใน MySQL ด้วย PHP
เดิมเคยเก็บโดยการแปลงด้วยคำสั่ง jsonencode แต่มักจะเกิดปัญหาเมื่อมีอักขระบางตัวหรือการขึ้นบรรทัดใหม่ ซึ่งจะทำให้ไม่สามารถแปลงกลับด้วยคำสั่ง jsondecode
แต่....
MySQL version 5.7.8 ได้เพิ่ม JSON data type ให้แล้ว (แม้ว่าเมื่อเลือกเป็น JSON data type แล้ว MySQL ก็จะเก็บเป็น longtext type ก็ตาม)
และมีคำสั่งเฉพาะในการจัดการกับข้อมูล เช่น
JSONOBJECT, JSONARRAY, JSONMERGEPRESERVE, JSONMERGEPATCH, JSONTYPE, JSONEXTRACT, JSONINSERT, JSONREPLACE, JSONSET, JSONREMOVE
JSON-SET:
UPDATEiot
SETdataJson
= JSON-SET(dataJson
, "$.test", "1" ) WHEREnodeDataId
=3
JSON-REPLACE จะบันทึกค่าทับของเดิม แต่หากของเดิมไม่เคยมี key นั้นอยู่ ก็จะไม่มีการบันทึกข้อมูลใหม่ลงไป
JSON-SET จะบันทึกข้อมูลทับของเดิม หากยังไม่เคยมี key นั้นอยู่ ก็จะสร้างเพิ่มให้โดยอัตโนมัติ
ลองดูรายละเอียดได้จาก How To Work with JSON in MySQL
ที่มา
Relate topics
- MySql backup
- nginx - ถึงเวลาซะที
- PHP PDO using
- macOS 12 Monterey: Web Server Setup/Apache/MariaDB/PHP Multiple Versions
- Ubuntu Server Installation
- Update table with incremented value grouped by column
- Bug : isset($body['location']) ดันเป็นจริงเมื่อ $body ไม่ใช่ array
- ย้ายบ้านให้ MySql
- MVC - แนวคิดเกี่ยวกับ MVC
- UPDATE multiple tables in MySQL using LEFT JOIN
- Column value swap
- FTP chmod
- my.cnf
- Hash & Salt
- Regular Expression - ยังไง ยังไง ก็ใช้ไม่ถูกสักที
- PHP : How to show Adsense on web
- PHP : Send SMS by smsgateway.com
- Directadmin PHP path
- Application Programming Interface (API)
- IP Camera snapshot