从for循环创建多个sql数据

dz6r00yl  于 2021-06-18  发布在  Mysql
关注(0)|答案(3)|浏览(361)

我正在尝试添加随机变量 x 以及 y mysql数据库的值,但奇怪的是,它似乎只增加了一个值。我在stackoverflow上查看了许多其他类似问题的帖子,但似乎它们在循环中没有查询是常见的问题。我确实有循环中的查询,不确定为什么它仍然不起作用。
请看下面我的代码:

<?php 
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "myTable";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
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 ($conn->multi_query($sql) === TRUE) {
        echo "New records created successfully";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }
}

$conn->close();
?>
mrzz3bfm

mrzz3bfm1#

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

$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();
ht4b089n

ht4b089n2#

您只是为每个循环运行一个查询。不需要多查询

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;
    }
}
mum43rcc

mum43rcc3#

我编辑了你的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();
}

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

相关问题