MySQL查询表单数据

时间:2015-09-01 16:57:27

标签: php mysql forms

我有一个php表单,当提交时将表单值发送到名为" Hotel"在一个名为" Reservations"的表中有一栏名为" Form"。在" Form"列,每个表单字段都包含在{}中,字段用逗号分隔。以下是" Form"中的数据。柱:

[{"id":"1","translation":"Token","value":"123456789"},
 {"id":"2","translation":"Name","value":"John Smith"}]

所需的MySQL查询结果:我想抓住每个"翻译"和"价值"在我的查询中,并将它们放入单独的列中。第1栏标题"令牌",第2栏标题"名称"然后列出每个

下面的值
--------------------------
| Token     | Name       |
--------------------------
| 123456789 | John Smith |
--------------------------

我之前从未在列中遇到过这种数据,所以我不确定如何创建查询。我或许在思考子串?非常感谢任何帮助或指导。如果我需要更多信息来帮助处理请求,请告诉我。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

首先,让我们获取Form列中的JSON字符串,并将其转换为json_decode()的数组。假设您已经从Form列中检索了值并将其分配给变量$form

$form = json_decode($form,true);

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

$token = $form[0]["value"];
$name = $form[1]["value"];

注意:这假定'token'总是首先出现在'form'字符串中,'name'总是出现在第二位。

答案 2 :(得分:0)

你可以这样做:

获取值的样本:

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

结果:1​​23456789

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

结果:John Smith

更新表格:

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');