首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL查询表单数据

MySQL查询表单数据
EN

Stack Overflow用户
提问于 2015-09-02 00:57:27
回答 3查看 83关注 0票数 2

我有一个php表单,当提交时发送表单值到一个名为“酒店”的MySQL数据库中,在一个名为“预订”的表中,有一个标题为“表单”的列。在" form“列中,每个表单字段都包含在{}中,字段之间用逗号分隔。下面是"Form“列中的数据:

代码语言:javascript
复制
[{"id":"1","translation":"Token","value":"123456789"},
 {"id":"2","translation":"Name","value":"John Smith"}]

期望的MySQL查询结果:我想获取查询中的每个“翻译”和“值”,并将它们放在单独的列中。列1标题"Token",列2标题"Name“,然后在下面列出每个值

代码语言:javascript
复制
--------------------------
| Token     | Name       |
--------------------------
| 123456789 | John Smith |
--------------------------

我以前从未在列中遇到过这种类型的数据,所以我不确定如何创建查询。我在想也许是子字符串?任何帮助或指导都是非常感谢的。如果需要我提供更多信息来帮助处理请求,请让我知道。

EN

回答 3

Stack Overflow用户

发布于 2015-09-02 01:14:01

表单列的数据格式为json。只需获取列值并使用php函数$result = json_decode( data );现在$result以数组格式保存数据。使用for each迭代数组并获取每个值。

票数 1
EN

Stack Overflow用户

发布于 2015-09-02 01:21:28

首先,让我们使用json_decode()Form列中的JSON字符串转换成一个数组。假设您已经从Form列中检索到值并将其赋值给变量$form

代码语言:javascript
复制
$form = json_decode($form,true);

接下来,我们将检索Token值和Name值:

代码语言:javascript
复制
$token = $form[0]["value"];
$name = $form[1]["value"];

注意:这假设'token‘总是出现在'form’字符串的第一个,而'name‘总是出现在第二个。

票数 1
EN

Stack Overflow用户

发布于 2015-09-02 01:25:40

你可以这样做:

获取值的示例:

代码语言:javascript
复制
SELECT REGEXP_REPLACE('[{"id":"1","translation":"Token","value":"123456789"},{"id":"2","translation":"Name","value":"John Smith"}]',
                      '^.*"translation":"Token","value\":"([0-9]+)".*$','\\1') AS Token;

结果: 123456789

代码语言:javascript
复制
SELECT REGEXP_REPLACE('[{"id":"1","translation":"Token","value":"123456789"},{"id":"2","translation":"Name","value":"John Smith"}]',
                      '^.*"translation":"Name","value\":"(.*)".*$','\\1') AS Name;

结果:约翰·史密斯

要更新表格,请执行以下操作:

代码语言:javascript
复制
update TABLENAME set
  TOKENFIELD = REGEXP_REPLACE(JSONFIELD,{"id":"2","translation":"Name","value":"John Smith"}]',
                          '^.*"translation":"Token","value\":"([0-9]+)".*$','\\1'),
  NAMEFIELD = SELECT REGEXP_REPLACE(JSONFIELD,{"id":"2","translation":"Name","value":"John Smith"}]',
                          '^.*"translation":"Name","value\":"(.*)".*$','\\1');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32337122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档