2013-02-01 37 views
1

你能幫我解決這個問題嗎?我的更新查詢在我的else語句中沒有被排除,但它在if語句中起作用。這是代碼。更新查詢不在while循環執行

 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.''); 
+1

[**請不要使用'mysql_ * '在新代碼**中的功能](http://bit.ly/phpmsql)。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 –

+0

好的,先生。感謝您的領導。 – chris

+0

我看到你正在使用'$ proj_id'作爲一個字符串。這是正確的數據類型嗎? – EmCo

回答

0

如果沒有else語句內工作,爲什麼不ü嘗試呼應查詢,然後複製該查詢並將其粘貼到查詢分析器或phpMyAdmin的檢查有無論它是否運行。是這樣的:

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

在瀏覽器打印查詢後,你會知道什麼查詢正在運行,並檢查它是否正確。一些調試技巧需要

+0

有沒有什麼可以迴應UPDATE查詢?我認爲這會給我一個空白頁面? – chris

+0

是的我說你可以回顯此行$查詢='更新'估計'設置'qty_onhand' ='qty_rec' - 'qty_rel'哪裏'proj_id' ='。$ proj_id。' AND'qty_rec' <>'est_qty' AND'mat_id' ='.mat_id_from_mat_desc($ materials)。' AND'est_id' ='。$ balid。''';在瀏覽器上運行它,你會得到mysql運行的查詢。像更新測試集數據= 1其中id = 5。那麼你可以複製這個查詢,並嘗試在phpmyadmin運行它來檢查查詢是否運行,否則phpmyadmin會拋出錯誤,你可以調試 – sonam

+0

它在phpmyadmin先生工作正常。 – chris

0

試試這個

 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.'"'); 
+0

先生已經顯示了同樣的結果。 – chris

+0

更新了我的回答 –

+0

仍然是一樣的結果先生。 – chris

-1

我也面臨同樣的problem.Using功能在其他循環替換您的查詢會工作

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";        
}