fis*_*man 9 php mysql json insert
php如何通过mysql存储和读取json数据?
mysql_query("INSERT INTO text (data) VALUES (json_encode('id' => $uid, 'value' => yes))");
Run Code Online (Sandbox Code Playgroud)
那么,如何更新data
价值?读出数据,然后插入json_encode和解码过程,或只是简单的方式更新?
[{"id": "1", "value": "yes"}]
Run Code Online (Sandbox Code Playgroud)
然后插入另一个更改[{"id": "1", "value": "yes"},{"id": "2", "value": "yes"}]
...
或者即使长期值很长.
[{"id": "1", "value": "yes"},{"id": "2", "value": "yes"}...{"id": "10000", "value": "yes"}]
然后更新另一个,改为 [{"id": "1", "value": "yes"},{"id": "2", "value": "yes"}...{"id": "10000", "value": "yes"},{"id": "10001", "value": "yes"}]
我想问一下,如何使这个mysql查询处理更加明智和高效?感谢您提出更多建议.
Mat*_*lin 24
从技术上讲,你走错了路.MySQL用于单独存储每个ID/VALUE.为了不改变你的代码,我们先看看你的解决方案,然后我将解释"更好"的方法.
首先,您需要将JSON作为变量,而不是SQL的一部分:
mysql_query("INSERT INTO text (data) VALUES (".mysql_real_escape_string(array(json_encode('id' => $uid, 'value' => 'yes'))).")");
代替
mysql_query("INSERT INTO text (data) VALUES (json_encode('id' => $uid, 'value' => yes))");
第一部分将允许您至少将数据正确地转换为mysql.我假设您的表有一个ID,您将使用它来更新或删除
当您检索数据时,可以json_decode $ row ['data']以从行中恢复数据并使用它.要更新它,只需:
mysql_query("UPDATE text SET data = "'.mysql_real_escape_string(json_encode($myJsonToBeData)).'" WHERE rowid = '.$myrowid)
现在,为了做到这一点的正确方法:
执行此操作的正确方法是将这些字段放入表中:ID,JSONID,JSONVALUE并使用此SQL:
SELECT * FROM text WHERE id = $rowid
INSERT INTO text VALUES(NULL, $jsonid, $jsonvalue)
UPDATE text SET jsonid = $jsonid, jsondata = $jsondata
这是非常基本的,但它允许您在数据库中拥有任何数量的条目,使其可搜索,索引,可排序,可查询等...