多次运行SQL查询

时间:2017-02-07 20:48:58

标签: php mysql

我需要运行此查询100次才能将数据输入我的MySQL数据库。 ID自动递增。不关心增加表名列。只需填写数据库。无需复制/粘贴100次,最好的方法是什么?

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

5 个答案:

答案 0 :(得分:0)

您可以进行批量插入:

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

只要您用逗号分隔它们,就可以根据需要执行任意数量的行。

答案 1 :(得分: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是自动递增的,所以只是将其从查询中删除

答案 2 :(得分: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);

答案 3 :(得分: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

答案 4 :(得分: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);
  }
}

呼叫功能一次。确保完成后删除!