Php JSON格式的MySQL更新字段

Php JSON格式的MySQL更新字段,php,mysql,json,Php,Mysql,Json,如何更新和复制同一表中的数据,但新数据是JSON格式的数据 我希望更新的字段是:{“t”:“token1”,“s”:“secret1”} DB user_api表: (id) (token) (secret) (api) --------------------------- 1 token1 secret1 NULL 更新查询: UPDATE user_api SET api = '{"t":"' +token+ '", "s":"' +secret+ '"}'; 使用CONCA

如何更新和复制同一表中的数据,但新数据是JSON格式的数据

我希望更新的字段是:{“t”:“token1”,“s”:“secret1”}

DB user_api表:

(id) (token) (secret) (api)
---------------------------
 1   token1  secret1  NULL
更新查询:

UPDATE user_api SET api = '{"t":"' +token+ '", "s":"' +secret+ '"}';

使用
CONCAT

UPDATE user_api SET api = CONCAT('{"t":"', token, '", "s":"', secret, '"}');
改用
JSON\u SET()
函数

UPDATE `user_api` SET `api` = JSON_SET(`api`,'$.t',token,'$.s',secret) WHERE ...
这有助于您摆脱所有的
CONCAT
内容。函数的作用是:如果指定字段中不存在密钥,则插入密钥/值对。如果存在,则函数更新该值


如果要在密钥不存在时插入,可以使用
JSON\u INSERT()
函数。或者,如果您想在密钥存在时更新值,可以使用
JSON\u REPLACE()
函数

旁注:您意识到,如果没有WHERE子句,它将更新整个表。如果您只拥有或将始终拥有一行,则这不是问题。MySQL将
+
视为加法运算符;但是有一个函数允许您从数据库设计角度连接字符串:将两列连接到第三列没有多大意义。如果你的应用程序的某些部分需要这样做,那么当你呈现或使用这种连接时,请在PHP中这样做。@RiggsFolly谢谢你的输入。这仅用于更新现有记录。