【问题标题】:update query not executing in while loop更新查询未在 while 循环中执行
【发布时间】:2013-01-16 21:58:12
【问题描述】:

你能帮我解决这个问题吗?我的 else 语句中的更新查询没有执行,但它在 if 语句中工作。这是代码。

        while($qtytoAdd > 0) {
    $remBalance = mysql_result(mysql_query('SELECT `est_qty` - `qty_rec` as balance FROM `estimates` WHERE `proj_id` = "'.$proj_id.'" AND `mat_id` = "'.mat_id_from_mat_desc($materials).'" AND `qty_rec` <> `est_qty` ORDER BY `item_id` ASC'), 0);
    $balid = mysql_result(mysql_query('SELECT `est_id` FROM `estimates` WHERE `proj_id` = "'.$proj_id.'" AND `mat_id` = "'.mat_id_from_mat_desc($materials).'" AND `qty_rec` <> `est_qty` ORDER BY `item_id` ASC'), 0);
    $currRec = mysql_result(mysql_query('SELECT `qty_rec` FROM `estimates` WHERE `proj_id` = "'.$proj_id.'" AND `mat_id` = "'.mat_id_from_mat_desc($materials).'" AND `qty_rec` <> `est_qty`'), 0);
    $currid = mysql_result(mysql_query('SELECT `req_id` FROM `requestdetails` JOIN `request` USING(`req_id`) WHERE `proj_id` = "'.$proj_id.'" AND `mat_id` = "'.mat_id_from_mat_desc($materials).'" AND `req_qty` <> `current_rec_qty` ORDER BY `req_id` ASC'), 0);

        if(($remBalance - $qtytoAdd) >= 0) {
            mysql_query('UPDATE `estimates` SET `qty_rec` = `qty_rec` + "'.$qtytoAdd.'" WHERE `proj_id` = "'.$proj_id.'" AND `mat_id` = "'.mat_id_from_mat_desc($materials).'" AND `est_id` = "'.$balid.'"');
                $qtytoAdd = 0;
        mysql_query('UPDATE `estimates` SET `qty_onhand` = `qty_rec` - `qty_rel` WHERE `proj_id` = '.$proj_id.' AND `qty_rec` <> `est_qty` AND `mat_id` = '.mat_id_from_mat_desc($materials).' AND `est_id` = '.$balid.'');
            } else {
                mysql_query('UPDATE `estimates` SET `qty_rec` = "'.$remBalance.'" + "'.$currRec.'" WHERE `proj_id` = "'.$proj_id.'" AND `mat_id` = "'.mat_id_from_mat_desc($materials).'" AND `est_id` = "'.$balid.'"');
                $qtytoAdd = $qtytoAdd - $remBalance;
        mysql_query('UPDATE `estimates` SET `qty_onhand` = `qty_rec` - `qty_rel` WHERE `proj_id` = '.$proj_id.' AND `qty_rec` <> `est_qty` AND `mat_id` = '.mat_id_from_mat_desc($materials).' AND `est_id` = '.$balid.'');
            }
        }

我真的不知道问题出在哪里。我正在谈论的查询是这个:

mysql_query('UPDATE `estimates` SET `qty_onhand` = `qty_rec` - `qty_rel` WHERE `proj_id` = '.$proj_id.' AND `qty_rec` <> `est_qty` AND `mat_id` = '.mat_id_from_mat_desc($materials).' AND `est_id` = '.$balid.'');

【问题讨论】:

标签: php mysql sql loops while-loop


【解决方案1】:

如果它在 else 语句中不起作用,为什么不尝试回显查询,然后复制该查询并将其粘贴到查询分析器或 phpmyadmin 中并检查它是否运行。像这样:

  else {
      $query="enter your query here";
      echo $query;
      mysql_query($query);
  }

在浏览器中打印查询后,您会知道正在运行什么查询并检查它是否正确。需要一些调试技巧

【讨论】:

  • 对于 UPDATE 查询有什么要回应的吗?我认为这会显示一个空白页面?
  • 是的,我说你可以回显这一行 $query='UPDATE estimates SET qty_onhand = qty_rec - qty_rel WHERE proj_id = '.$proj_id.' AND qty_rec est_qty AND mat_id = '.mat_id_from_mat_desc($materials)。和est_id = '.$balid.''';在浏览器上运行它,你会得到 mysql 运行的查询。类似于更新测试集数据=1,其中 id=5。然后您可以复制此查询并尝试在 phpmyadmin 中运行它以检查查询是否运行,否则 phpmyadmin 会抛出您可以调试的错误
  • 你检查过 else 语句是否被调用过吗?你得到什么错误信息?
【解决方案2】:

试试这个

      else {
            mysql_query('UPDATE `estimates` SET `qty_rec` = "'.$remBalance + $currRec.'" WHERE `proj_id` = "'.$proj_id.'" AND `mat_id` = "'.mat_id_from_mat_desc($materials).'" AND `est_id` = "'.$balid.'"');

    mysql_query('UPDATE `estimates` SET `qty_onhand` = `qty_rec` - `qty_rel` WHERE `proj_id` = '.$proj_id.' AND `qty_rec` <> `est_qty` AND `mat_id` = '.mat_id_from_mat_desc($materials).' AND `est_id` = '.$balid.'');
        }
        $qtytoAdd = $qtytoAdd - $remBalance;
    }

编辑。

尝试用这个替换您的查询

 mysql_query('UPDATE `estimates` SET `qty_onhand` = `qty_rec` - `qty_rel` WHERE `proj_id` = "'.$proj_id.'" AND `qty_rec` <> `est_qty` AND `mat_id` = "'.mat_id_from_mat_desc($materials).'" AND `est_id` = "'.$balid.'"');

【讨论】:

  • 还是一样的结果,先生。
  • 您的查询很好,如果您在某处有问题,请验证
  • 我认为这是我唯一遇到问题的部分。
【解决方案3】:

我也遇到过同样的问题。在你的 else 循环中使用函数会起作用

else
{
    $update_function=update_function($ud_id,$subject,$to_user,$from_user);
    [//pass your variables instead of $ud_id,$subject,$to_user,$from_user]
}

function update_function($ud_id,$subject,$to_user,$from_user)
{               
    //place your query over here    
    $query=mysql_query("UPDATE `email_configuration` SET `subject`='$subject',`to_user`='$to_user',`from_user`='$from_user' WHERE id='$ud_id'");    
    echo "Record Updated";                              
}

【讨论】:

    猜你喜欢
    • 2013-05-13
    • 1970-01-01
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 2013-03-11
    • 2014-09-10
    • 1970-01-01
    • 2021-05-06
    相关资源
    最近更新 更多