2012-04-15 73 views
2

在我的表中不知道名稱和列數時,如何在將新行插入表中時跳過列插入到MySQL時跳過列

使用INSERT (col1, col2) VALUES (1, 2)不是選項,因爲我無法知道運行時的列數。這一切都是根據用戶輸入計算的。

因此,我需要在插入時跳過第一列(id,PRIMARY KEY auto_increment)。

+0

將該值設置爲Null。這不會像跳過它一樣,因爲它會是空的,除非有觸發器...等一下..除非你在運行時動態創建表,否則你怎麼不知道列數? ? – xQbert 2012-04-15 15:53:16

+0

爲什麼它不是一個選項?如果用戶輸入讓你決定*要插入什麼,它必須足以計算* how *插入它。換句話說,如果你知道你將1插入到col1中,將2插入到col2中,這足以動態地構造一個參數化語句,將值1和2綁定到它的參數,然後在你的mysql實例中執行它。 – dasblinkenlight 2012-04-15 15:54:39

+0

因爲這意味着創建兩個循環來構建查詢 - 第一個在VALUES之前構建零件,第二個插入實際值 – 2012-04-15 15:59:15

回答

2

您可以插入而不提供列名稱,但必須爲所有列提供一些值。

INSERT INTO comments 
VALUES (null, 2, 3, 4,null,6) 

CREATE TABLE IF NOT EXISTS `comments` (
    `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, 
    `imageid` int(10) unsigned NOT NULL DEFAULT '0', 
    `uid` bigint(20) unsigned NOT NULL DEFAULT '0', 
    `content` text CHARACTER SET utf8, 
    `adate` datetime DEFAULT NULL, 
    `ip` int(10) unsigned DEFAULT NULL, 
    PRIMARY KEY (`id`), 
    KEY `ids` (`imageid`,`adate`) USING BTREE 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;