如何在mysql中创建1k行

时间:2014-05-07 10:51:02

标签: php mysql

我有一个关于如何使用php

创建1k行的小问题,如下面格式的示例
 for ($i = 0;$i < 1000;$i++) {
    $sql = 'INSERT INTO `tt_test` (`id`, `name` ,`year`,`payment`,`address`) VALUES (null,"asdasdsad'.$i.'",rand(2010,2015),rand('pending','success','failed','refunded'),"abcd'.$i.'")';
    $preparesql = $DBH->prepare($sql);
    $executesql = $preparesql->execute(array());
}

任何人都可以帮助我....谢谢你-kanth

4 个答案:

答案 0 :(得分:2)

您正在使用预备语句。您正在准备查询1000次,但您只需准备一次。

以下是使用PDO的示例:

$sql = "INSERT INTO `tt_test` (`name` ,`year`,`payment`,`address`) VALUES (:name,:year,:payment,:address)";
$preparesql = $DBH->prepare($sql);

for ($i = 0;$i < 1000;$i++) {
    $params = array();
    $params[':name'] = 'asdasdsad'.$i;
    $params[':year'] = rand(2010,2015);
    $params[':payment'] = rand('pending','success','failed','refunded');
    $params[':address'] = 'abcd'.$i;
    $executesql = $preparesql->execute($params);
}

准备查询(一次!)然后添加参数就更容易了。您的代码更易于阅读(和维护),您也可以防止SQL注入。

答案 1 :(得分:0)

明确看看@Mithredate提供的链接,因为MySQL在某个时刻变得笨拙,但这会使你的代码工作:

 for ($i = 0;$i < 1000;$i++) {
    $sql = 'INSERT INTO `tt_test` (`id`, `name` ,`year`,`payment`,`address`) VALUES (null,"asdasdsad'.$i.'",rand(2010,2015),rand("pending","success","failed","refunded"),"abcd'.$i.'")';
    $preparesql = $DBH->prepare($sql);
    $executesql = $preparesql->execute(array()); }

编辑:我坚持你所提供的东西,向你展示你有多接近它的工作,Stephan Vierkant的解决方案是一个更好的解决方案,一旦你得到你做错了你的第一次尝试。

答案 2 :(得分:0)

如果没有PHP,这是怎么做的:

create table num(n int not null primary key) engine=InnoDB;

insert num(n) 
values (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);


INSERT INTO `tt_test` (`id`, `name`, `year`, `payment`, `address`) 
select
    null, 
    concat('asdasdsad', n1.n + n2.n * 10 + n3.n * 100), 
    floor(2010 + 5 * rand()), 
    elt(floor(1 + 4 * rand()), 'pending', 'success', 'failed', 'refunded'),
    concat('abcd', n1.n + n2.n * 10 + n3.n * 100)
from num n1
join num n2 on 1=1
join num n3 on 1=1;

优点:您有一个“服务表”,您可以使用它来生成序列。

缺点:没有PHP:)

答案 3 :(得分:-1)

由于查询的大小,您可能会遇到执行时问题。 This可能会对您有所帮助。