Php 更新查询未在while循环中执行

Php 更新查询未在while循环中执行,php,mysql,sql,loops,while-loop,Php,Mysql,Sql,Loops,While Loop,你能帮我解决这个问题吗?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(

你能帮我解决这个问题吗?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.'');
            }
        }
while($qtytoAdd>0){
$remBalance=mysql\U结果(mysql\U查询('estimates'中选择'est\u qty`-'qty\u rec`作为余额,其中'proj\u id`='.$proj\u id.''和'mat\u id`='.'mat desc($materials.'')中的'est\u qty\u rec作为'est\u qty`订单,按'item\u id`ASC'),0);
$balid=mysql\u结果(mysql\u查询('estimates'中选择'est\u id',其中'proj\u id`='.$proj\u id.''和'mat\u id`=''.'中选择'est\u id',从'mat\u desc($materials.'')和'qty\u rec根据'item\u id`ASC'订购'est\u qty',0);
$currRec=mysql\u结果(mysql\u查询(`quantity\u rec`FROM`estimates`WHERE`proj\u id`='.$proj\u id.''和`mat\u id`='.'.mat\u id`FROM`mat\u desc($materials.''和`quantity\u rec`est\u qty`),0);
$currid=mysql\u结果(mysql\u查询(`requestdetails`JOIN`request`USING(`req\u id`)选择`req\u id```,其中`proj\u id`='.$proj\u id.''和`mat\u id`='.`mat desc($materials.''中的`mat id`.''和`req\u数量`current\u rec数量`ORDER BY`req\u id`ASC'),0);
如果(($remBalance-$qtytoAdd)>=0){
mysql_query('UPDATE`estimates`SET`qty_rec`=`qty_rec`+'.$qtytoAdd'.'WHERE`proj_id`='.$proj_id'.'和`mat_id`='.'matt_desc($materials.)中的mat_id`=''和`est_id`='.$balid'.');
$qtytoAdd=0;
mysql查询('UPDATE`estimates`SET`qty\u onhand`=`qty\u rec`-`qty\u rel`其中`proj\u id`='.$proj\u id.'和`qty\u rec``est\u qty`和`mat\u id`='.mat\u-desc($materials)中的mat\u id`.`est\u id`='.$balid.');
}否则{
mysql_query('UPDATE`estimates`SET`Quantity_rec`='.$remBalance.''+'.$currRec.''WHERE`proj_id`='.$proj_id.''和`mat_id`=''.$materials.'mat desc.$rembalid.''中的mat id`='.';
$qtytoAdd=$qtytoAdd-$remBalance;
mysql查询('UPDATE`estimates`SET`qty\u onhand`=`qty\u rec`-`qty\u rel`其中`proj\u id`='.$proj\u id.'和`qty\u rec``est\u qty`和`mat\u id`='.mat\u-desc($materials)中的mat\u id`.`est\u 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.'');
mysql\u query('UPDATE`estimates`SET`qty\u onhand`=`qty\u rec`-`qty\u rel`WHERE`proj\u id`='.$proj\u id.'和`qty\u rec``est\u qty`和`mat\u id`='.mat u-desc($materials.'和`est\u-id`='.$balid.');

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

  else {
      $query="enter your query here";
      echo $query;
      mysql_query($query);
  }
在浏览器中打印查询后,您将知道正在运行的查询并检查其是否正确。需要一些调试技巧

试试这个

      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;
    }
else{
mysql\u query('UPDATE`estimates`SET`qty\u rec`='.$remBalance+$currRec'.'WHERE`proj\u id`='.$proj\u id'.'和`mat\u id`='.''.mat\u desc($materials.)中的mat\u id`='.$balid'.');
mysql查询('UPDATE`estimates`SET`qty\u onhand`=`qty\u rec`-`qty\u rel`其中`proj\u id`='.$proj\u id.'和`qty\u rec``est\u qty`和`mat\u id`='.mat\u-desc($materials)中的mat\u id`.`est\u 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\u query('UPDATE`estimates`SET`qty\u onhand`=`qty\u rec`-`qty\u rel`WHERE`proj\u id`='.$proj\u id.''和`qty\u rec``est\u qty`和`mat\u id`='.'mat desc($materials.''中的mat id`.''和`est\u id`='.$balid.'');

我也遇到了同样的问题。在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";                              
}

. 它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果您选择PDO,。好的,先生。谢谢提醒。我看到您正在使用
$proj_id
作为字符串。那是正确的数据类型吗?不,先生,那是主键。但我认为这在查询中可以很好地工作。对于更新查询有什么需要回应的吗?我想这会给我一个空白页?是的,我是说你可以重复这行$query='UPDATE
estimates
SET
qty\u rec
-
qty\u rel
其中
项目id
项目id.'和
数量rec
est\u数量
物料id
物料id'“和
est_id
=”.$balid.”;在浏览器上运行它时,您将得到mysql运行的查询。类似于更新测试集data=1,其中id=5。然后,您可以复制此查询并尝试在phpmyadmin中运行它,以检查查询是否运行,否则phpmyadmin会抛出错误,您可以调试它。您是否检查过是否调用过else语句?你得到了什么错误信息?仍然是相同的结果,先生。如果你有问题,我想这是我唯一遇到问题的地方,你的查询很好。