[英]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.