簡體   English   中英

MySQL查詢表單數據

[英]MySQL Query form data

我有一個 php 表單,當提交表單值時,它會將表單值發送到名為“預訂”的表中名為“酒店”的 MySQL 數據庫中,該表中有一個名為“表單”的列。 在“表單”列中,每個表單字段都包含在 {} 內,字段之間用逗號分隔。 以下是“表單”列中的數據:

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

所需的 MySQL 查詢結果:我想獲取查詢中的每個“翻譯”和“值”,並將它們放入單獨的列中。 第 1 列標題“令牌”,第 2 列標題“名稱”,然后列出每個值下面的值

--------------------------
| Token     | Name       |
--------------------------
| 123456789 | John Smith |
--------------------------

我以前從未在列中遇到過這種數據,所以我不確定如何創建查詢。 我在想 substring 也許? 非常感謝任何幫助或指導。 如果需要我提供更多信息來幫助處理請求,請告訴我。

表單列的數據格式為 json。 只需獲取列值並使用 php 函數 $result = json_decode(data); 現在 $result 以數組格式保存數據。 使用 for each 迭代數組並獲取每個值。

首先,讓我們獲取Form列中的 JSON 字符串,並使用json_decode()將其轉換為數組。 假設您已經從Form列中檢索到值並將其分配給變量$form

$form = json_decode($form,true);

接下來,我們將檢索Token值和Name值:

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

注意:這里假設 'token' 總是首先出現在 'form' 字符串中,而 'name' 總是第二次出現。

你可以這樣做:

獲取值的示例:

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

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

結果:約翰·史密斯

更新表格:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM