我有以下代码:
while(1){
$r = rand(0,9);
echo "running...";
if($current_item >= $array[$r]['limiter']){
$foo = $foo;
$bar = $bar;
mysql_query("INSERT INTO db (type, hp) VALUES ('$foo', '$bar')");
echo "done.";
break 1;
}
}
当我执行此操作时,我会"running..."
回复一次或几次(这是预期的)并且"done."
按预期回复一次。
然后将在数据库中插入两个条目,其中不同的信息暗示整个if语句都运行了两次。
以前有人碰到过吗?有没有发生的事情,我没有在这里看到?任何想法如何解决这个问题?
我对更新有类似的问题,它们也会更新两次,它们与循环完全分开。
编辑:只是为了澄清,
$current_item
确实发生了变化,但在循环的上下文中它是不变的。
$array[$r]['limiter']
引用多维数组。
这些都不会影响循环本身,这只是一个必须满足的条件。
答案 0 :(得分:0)
我修改了一些代码以便能够运行它,我运行的代码是:
for ($r=0;$r<10;++$r) {
$array[$r]['limiter'] = $r;
}
$current_item = 3;
$foo = 1;
$bar = 2;
while(1){
$r = rand(0,9);
echo "running...";
if($current_item >= $array[$r]['limiter']){
$foo = $foo;
$bar = $bar;
echo 'do_query: '."INSERT INTO db (type, hp) VALUES ('$foo', '$bar')";
echo "done.";
break 1;
}
响应:
第一次:正在运行... do_query:INSERT INTO db(type,hp)VALUES('1','2')已完成。
第二名:正在运行......正在运行...正在运行... do_query:INSERT INTO db(type,hp)VALUES('1','2')已完成。
第3次:正在运行...正在运行... do_query:INSERT INTO db(type,hp)VALUES('1','2')已完成。
因此查询只使用此代码执行一次。问题必须在一段代码之前,所以它会进入2次。