[英]mysql query dynamic update
解決
我有一個 mysql 表(table1),其中包含許多具有單個 ID 的列。
表名: table1
列:從“pt1 到 pt1000”
編號= 1
示例:
發送查詢更新命令(來自 php 形式)
我在從“pt1”到“pt10”的列中插入10個值
使用其他數據發送查詢更新命令(來自相同的 php 表格)
我在從“pt11”到“pt21”的列中插入10個值,依此類推
問題:如何設置查詢,以便它知道將值插入到正確的列中,而不是總是在相同的列中?
謝謝大家幫助我
------------------編輯------------------
我將傳遞手冊(輸入和 select 值)從 php 表單解析為查詢的 php 頁面,並將此值插入變量中以構造動態查詢。
例如:
IN PHP FORM:有兩個 select
1 - Select DB(值 = “name_db_i_want_to_update”)
2 - Select 列(值 = “1,2,3,4,5,6,7 等”)
在 PHP 查詢頁面:
這不是最好的解決方案,當然作為編程邏輯也是錯誤的,但它確實有效。
感謝大家的幫助
您應該將您的設計更改為類似 mytable2 的東西,以收集數據將需要更多的 sql 編程,但以您需要的形式獲取數據應該是一次性的事情。
如果你堅持保留你的設計,你可以使用像 blow 這樣的存儲過程來填充你的表,但你必須知道所屬的序列,這也可以自動化,另一個表在你已經填充的數據 position存儲,但動態sql的基本原理是一樣的。
CREATE TABLE mytable2(id int, pos int, value int)
INSERT INTO mytable2 VALUES (1,1,1),(1,2,2),(1,3,3),(1,4,4),(1,5,5),(1,6,6)
CREATE TABLE mytable(id int, pt1 int, pt2 int, pt3 int, pt4 int, pt5 int, pt6 int)
CREATE PROCEDURE `new_routine` (_id int, _sequence int, _pt1 int, _pt2 int,_pt3 int) BEGIN IF _sequence = 0 then SET @sql:= CONCAT('INSERT INTO mytable (id,pt1,pt2,pt3) VALUES (',_id,',',_pt1,',',_pt2,',',_pt3,')'); ELSE SET @sql:= CONCAT('UPDATE mytable SET pt',1 +((_sequence -1) * 3),'= ',_pt1,', pt',2 +((_sequence -1) * 3),'= ',_pt2,', pt',3 +((_sequence -1) * 3),'= ',_pt3,' WHERE id = ',_id); END IF; PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; END
CALL new_routine(1,0,1,1,1);
CALL new_routine(1,1,2,2,2)
CALL new_routine(1,2,3,3,3)
SELECT * FROM mytable
編號 | pt1 | pt2 | pt3 | pt4 | pt5 | pt6 -: | --: | --: | --: | --: | --: | --: 1 | 2 | 2 | 2 | 3 | 3 | 3
SELECT * FROM mytable2
編號 | 位置 | 值-: | --: | ----: 1 | 1 | 1 1 | 2 | 2 1 | 3 | 3 1 | 4 | 4 1 | 5 | 5 1 | 6 | 6
db<> 在這里擺弄
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.