2017-02-07 189 views
0

我需要運行此查詢100次才能將數據輸入到我的MySQL數據庫中。 ID自動遞增。不關心遞增表名字段。只需要填寫數據庫。無需複製/粘貼100次,最好的方法是什麼?多次運行SQL查詢

"INSERT INTO `tables`(id, name, assigned_seating, open_seating, position) VALUES ('', 'Table 1', 0, 1, '')"; 
+0

使用for循環? – pocketg99

+0

可以在一個查詢中完成,不需要100個,給我一個莫寫 – nogad

+1

你可以在8個查詢總數中做到這一點,如果你跟着7'INSERT .... SELECT's ...雖然技術上你結束然後是128行。 – Uueerdo

回答

0

如果有人認爲這在未來,這是最好的答案

public function addbatch() 
{ 
    for ($i = 1; $i <= 100; $i++) 
    { 
    $tableName = "Table " . $i; 
    $q = "INSERT INTO `tables`(id, name, cap, assigned_seating, open_seating, position) VALUES ('', '".$tableName."', 10, 0, 1, '')"; 
    $this->db->query($q); 
    } 
} 

通話功能一次。確保在完成時刪除!

0

你可以做批量插入:

insert into Table 
(column1, column2) 
    VALUES 
     ('value 1', 'value2') , 
     ('value3', 'value4') 

,只要你想,只要你用逗號將它們分開你可以做盡可能多的行。

0
$vals=''; 
for ($i = 0; $i < 100; $i++) { 
    $vals.="('Table 1', 0, 1, ''),"; 
} 
$vals=rtrim($vals,','); 

mysqli_query($dbh, 'INSERT INTO `tables`(name, assigned_seating, open_seating, position) VALUES ' . $vals); 

假設ID是自動遞增所以才離開它的查詢

0

試試這個:

DELIMITER $$ 

DROP PROCEDURE IF EXISTS `multipleInsert` $$ 
    CREATE PROCEDURE `multipleInsert`(in n int) 
    BEGIN 
    DECLARE cont int default 0; 
    WHILE cont < n DO 
    INSERT INTO `tables`(id, name, assigned_seating, open_seating, position) VALUES ('', 'Table 1', 0, 1, ''); 
    set cont = cont + 1; 
    end while; 
    END $$ 

DELIMITER ; 

呼叫過程:

call multipleInsert(100); 
0

所有你需要的是現有的至少有100行的表格。我將使用information_schema.columns爲例:

INSERT INTO `tables`(id, name, assigned_seating, open_seating, position) 
    SELECT null, 'Table 1', 0, 1, '' 
    FROM information_schema.columns 
    LIMIT 100; 

演示:http://rextester.com/DMSC23853