插入/更新发生两次

时间:2012-09-21 20:06:55

标签: php

我有以下代码:

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']引用多维数组。

  • 这些都不会影响循环本身,这只是一个必须满足的条件。

1 个答案:

答案 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次。