在我的数据库中插入1000个结果。自动

时间:2014-06-03 06:35:27

标签: php mysqli

我正在建立一个像电话议程一样工作的小应用程序。我不认为这对互联网用户非常有用,但我只是为了学习一些php和mysql。

现在,我正在检查并改善数据库性能的部分。为此,我想添加~1.000联系人,以便能够测试一些索引并获得相关结果。

我想告诉我这是否可行,你会如何推荐我这样做。 在我的数据库中,我有:id (autoincremented) | email (pk) | name | sex | school

require_once("connection.php");
$sql = "INSERT INTO contacts(id,email, name, sex, school) VALUES ";
for ($i = 0; $i < 1000; $i++) {
    $sql .= "('".$id1[$i]."','".$email[$i].","male", "Computer Science"),";
}
rtrim($sql, ',');



$result = mysqli_query($con, $sql); 
if ( false===$sql ) { 
printf("error: %s\n", mysqli_error($con)); 
}

我有一个问题!我的电子邮件需要独一无二,因为它是PK。我想要一些像1blablabla @ gmail.com,2blablabla @ gmail.com,3blablabla @ gmail.com。任何想法怎么做?

5 个答案:

答案 0 :(得分:3)

首先,我建议使用prepared statements而不是mysqli_query调用,准备好的语句对于这类工作来说非常棒。

当电子邮件是唯一的时,只需用循环索引连接一个字符串:

$email = $i . "blablabla@gmail.com";

他们将是:
0blablabla@gmail.com
1blablabla@gmail.com
===&GT;
999blablabla@gmail.com

答案 1 :(得分:1)

准备好的陈述会使这很容易

$stmt = $con->prepare("INSERT INTO contacts(email, name, sex, school) VALUES (?, ?, 'male', 'Computer Science')");
$stmt->bind_param('ss', $email, $name);

for ($i = 1; $i <= 1000; $i++) {
    $email = "user{$i}@example.com";
    $name = "Test Name $i";
    $stmt->execute();
}

我还会在id列上设置主键,并为email添加唯一约束。

答案 2 :(得分:0)

require_once("connection.php");
$sql = "INSERT INTO contacts(id,email, name, sex, school) VALUES ";
for ($i = 0; $i < 1000; $i++) {
    $sql .= "('".$id1[$i]."','".$i.$email[$i].","male", "Computer Science"),";
}
rtrim($sql, ',');



$result = mysqli_query($con, $sql); 
if ( false===$sql ) { 
printf("error: %s\n", mysqli_error($con)); 
}

答案 3 :(得分:0)

试试这段代码。这将帮助您为每行提供唯一值,因此您可以对此数据执行各种测试而不会产生任何混淆。

我使用了mysqli_对象类型查询。您可以使用您喜欢的那个。

for ($i = 0; $i < 1000; $i++) {
    $email = $db->escape_string('email'.$i.'@example.com');
    $name = $db->escape_string('Person Name '.$i);
    $gender = array("male","female");
    $sex = $db->escape_string($gender[array_rand($gender,1)]);
    $school = $db->escape_string('School Name '.$i);
    $sql = "INSERT INTO contacts(id, email, name, sex, school) VALUES ('', '$email', '$name', '$sex', '$school')";
    if(!$result = $db->query($sql))
    {
        die('There was an error running the query [' . $db->error . ']');
    }
}

答案 4 :(得分:-2)

$email = uniqid();
$sql .= "('".$id1[$i]."','".$email."@gmail.com','male', 'Computer Science'),";