从For循环创建多个SQL数据

时间:2018-09-27 14:49:52

标签: php mysql sql

我正在尝试向MySQL数据库添加随机cPanel >> Home >> Domains >> Redirectsx值,但奇怪的是,它似乎只添加了一个值。我在Stackoverflow上查看了许多其他类似问题的帖子,似乎他们在循环内没有查询是常见问题。我确实在循环中查询,并且不确定为什么它仍然无法正常工作。

请在下面查看我的代码:

y

3 个答案:

答案 0 :(得分:0)

在for循环中创建values数组,然后使用implode在循环外构建查询。

    $servername = "localhost";
    $username = "root";
    $password = "root";
    $dbname = "myTable";

    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_errno) {
        die("Connection failed: " . $conn->connect_error);
    } 
    $sql = "INSERT INTO data (x, y) VALUES ";
    $values = [];
    for ($i = 0; $i <= 100; $i++){
        $x = rand(0,20);
        $y = rand(0,200);
        $values[] = "($x, $y)";
    }

    $query = $sql . implode(",", $values) . ";";
    $r = $conn->query($query);

    if ($r) {
      echo "New records created successfully";
    } else {
      echo "Error: " . $query  . "<br>" . $conn->connect_error;
    }

    $conn->close();

答案 1 :(得分:0)

您只为每个循环运行一个查询。无需多次查询

for ($i = 0; $i <= 100; $i++){
    $x = rand(0,20);
    $y = rand(0,200);
    $sql = "INSERT INTO data (x, y)"
    $sql .= "VALUES ($x, $y);";
    //mysql_query($sql);

    if (mysqli_query($conn,$sql)) {
        echo "New records created successfully";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }
}

答案 2 :(得分:0)

我编辑了您的for循环,使其看起来像这样,对我来说效果很好。

for ($i = 0; $i <= 100; $i++){
    $x = rand(0,20);
    $y = rand(0,200);
    $sql = "INSERT INTO data (x, y) VALUES ('$x', '$y')";
    $result = mysqli_query($conn, $sql);
    if($result)
    {
        echo "Successfully created record " . $i;
    } else
    {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }
    ob_start();
    ob_flush();
    flush();
    usleep(001000);
    ob_flush();
    flush();
}

它延迟了整个循环,大约只有五分之一秒。我延迟迭代的原因是因为您的数据库可能会限制在一个时间范围内可以发送多少个查询。它对我有用,让我知道它是否对您有用。