Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql插入到循环中,不插入某些行_Php_Mysql_Loops_While Loop - Fatal编程技术网

Php mysql插入到循环中,不插入某些行

Php mysql插入到循环中,不插入某些行,php,mysql,loops,while-loop,Php,Mysql,Loops,While Loop,我有一个循环,它将新行插入到我的数据库中。它专门用于在'name'列中插入具有唯一值的特定数量的行 while($rows\u inserted

我有一个循环,它将新行插入到我的数据库中。它专门用于在
'name'
列中插入具有唯一值的特定数量的行

while($rows\u inserted<100){
//创建一个随机数
//随机数的最小值和最大值
$min=5001;
$max=5100;
$number=rand($min,$max);
//使用$con details连接到数据库并执行查询
mysqli_query($con,“插入cmssps_卡_代码(id、家长id、姓名、状态)值(“”、“$number”、“0”)”);
如果(mysqli\u受影响的行($con)==1){
$rows_inserted++;//更新计数器
}
}
在这个特定的有限实例中,我在5001和5100之间创建了100个“随机”数,因此在这个实例中是多余的,但随机数用于生产实例中,只是为了避免混淆

我的问题是该语句执行成功,但实际上只创建了87多行。然后,我尝试运行代码来插入以前排除的行的一个实例,它进入了一个无休止的循环——但是,我可以直接在数据库中创建行。这就好像PHP代码识别出行已经创建,而实际上它还没有


有什么想法吗?

您必须在while之前定义
$rows\u inserted

 $rows_inserted = 0;
 while($rows_inserted < 100) {
 ....

2-或更改列名并删除其中的
UNIQUE
约束以接受重复值。

name
具有
UNIQUE
约束?您必须向我们显示表定义,以查看是否存在试图违反的约束。预计会有一些重复的$number在那里。如果你在100的间隔内生成100个随机数(例如1..100),你不可能得到100个唯一的数字!会有重复的。这就是为什么从100个随机数中得到87行。谢谢。这似乎奏效了。正如其他人所说,这是一个创建重复项然后跳过的问题。
$number = 5001 + $rows_inserted ;
mysqli_query($con,"INSERT INTO cmssps_card_codes (id, parent_id, name, status) 
                   VALUES ('', '', '$number', '0')");