-1

我想通过 mysql 表中的循环插入数据,但它只插入循环执行的时间,我想在我的表中插入 500 次相同的数据下面是代码提前谢谢

enter code here



<html>
<head>
</head>
<body>
<div>
<?php

$con=mysqli_connect("localhost","root","khan","first");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

for($i=1;$i<500;$i++)
{
 $sql="INSERT INTO bio(name, fathername , address) VALUES('khan','khan','khan')";  
 echo "Number " . $i . "<br>";
}

if (!mysqli_query($con,$sql))
  {
  die('Error: ' . mysqli_error($con));
  }

mysqli_close($con);
?>
</div>
</body>
</html>
4

2 回答 2

0

包括范围mysqli_queryfor

$con=mysqli_connect("localhost","root","khan","first"); 
// Check connection 
if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

for($i=1;$i<500;$i++) { 
    $mysqli_query ="INSERT INTO bio(name, fathername , address) VALUES('khan','khan','khan')";
    echo "Number " . $i . "<br>"; 
    // <<-- you always leave a closing bracket here 
    if (!mysqli_query($con,$sql)) { 
        die('Error: ' . mysqli_error($con)); 
    } 
} 
mysqli_close($con);

现在您可以在数据库端执行此操作,而无需使用任何查询循环

INSERT INTO bio(name, fathername , address)
SELECT 'khan','khan','khan'
  FROM
(
select a.N + b.N * 10 + c.N * 100 + 1 n
from (select 0 as N union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) a
      , (select 0 as N union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) b
      , (select 0 as N union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) c
) t
WHERE t.n < 501

查看更多关于用假数据填充表格的信息https://stackoverflow.com/a/17139749/1920232

于 2013-06-17T10:01:54.713 回答
0

这是因为您仅在循环之后插入

试试这个:

for($i=1;$i<500;$i++)
{
 $sql="INSERT INTO bio(name, fathername , address) VALUES('khan','khan','khan')";  
 echo "Number " . $i . "<br>";

 if (!mysqli_query($con,$sql))
  {
  die('Error: ' . mysqli_error($con));
  }
}

正如你所看到的,现在mysqli_query是在循环内,所以它会执行 500 次,而不仅仅是一次(注意{ }position.

也尽量不要使用die(); 使用正确的错误处理来代替这个。

例如:

for($i = 1; $i < 500; $i++) {
//INSERT AND STUFF
if(!mysqli_query($con, $sql)) {
echo "Something went wrong. Try again.";
break;
}
}

当然,您可能想退回出错的地方。所以你的 SQL 中发生的实际错误。

查看 Mysqli 文档。

如果你把它放在一个函数中,你不需要使用break;. 相反,您可以使用该return "something";语句返回错误并退出 for 循环。

现在你最终会得到:

function insertFunction() {
   for(.....
       //DO INSERT
       if(!mysqli_query(...
            return "Errormessage: "+ $mysqli->error;

}

此外,您可能想查看为您的插入准备好的语句,以及如何确保您只使用 500 条记录执行 1 次插入,而不是查询数据库 500 次。

这可能会让你开始准备好的陈述

于 2013-06-17T10:02:10.953 回答