php如何通过mysql存储和读取json数据?

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

这是非常基本的,但它允许您在数据库中拥有任何数量的条目,使其可搜索,索引,可排序,可查询等...

  • +1用于观察OP的请求并显示正确的方式. (8认同)