2016-12-26 200 views
3

我有這個疑問,這個人是在COMP_NAME做工精細如何在MySQL數據庫中減去一個基於另一個表值的表值?

$qu= "UPDATE comp_controller SET num_comp=(num_comp-(SELECT num_comp FROM alloted_comp WHERE comp_name="Arduino uno")) WHERE comp_name ="Arduino uno""; 

我已經使用預定義的價值,但必須從以下查詢得到COMP_NAME

$sql="INSERT INTO alloted_comp (comp_type,comp_name,num_comp)VALUES ('$_POST[comp_type]','$_POST[comp_name]','$_POST[num_comp]') "; 

如何讓從第一次查詢插入值第二個查詢

更新:

我modifie d我的代碼

$type = isset($_POST['comp_type'])? $_POST['comp_type'] : ''; 
$name = isset($_POST['comp_name'])? $_POST['comp_name'] :''; 
$comp = isset($_POST['num_comp]'])? $_POST['num_comp]'] :''; 


$sql="INSERT INTO alloted_comp (comp_type,comp_name,num_comp) 
VALUES ('$_POST[comp_type]','$_POST[comp_name]',$_POST[num_comp]) 
ON DUPLICATE KEY UPDATE num_comp=num_comp+'$_POST[num_comp]'"; 

$qu= mysql_query("UPDATE comp_controller SET num_comp= 
(num_comp-(SELECTnum_comp FROM alloted_comp 
WHERE comp_name='$name'))WHERE comp_name ='$name' "); 

現在我面臨着新的問題,變電站,如果我進入num_comp 1,它將值2或3或有時垃圾值

回答

0

您可以使用變量在UPDATE查詢中,就像在INSERT查詢中做的那樣。

$qu= "UPDATE comp_controller 
     SET num_comp=(num_comp-(
     SELECT num_comp FROM alloted_comp 
     WHERE comp_name='$_POST[comp_name]')) 
     WHERE comp_name ='$_POST[comp_name]'"; 

請注意,這很容易受到SQL注入的影響。您應該學會使用準備好的查詢,或者至少使用mysqli_real_escape_string來逃避變量。

0

嘗試這樣減去.. ...對於第二個查詢

$type = isset($_POST['comp_type'])? $_POST['comp_type'] : ''; 
$name = isset($_POST['comp_name'])? $_POST['comp_name'] :''; 
$comp = isset($_POST['num_comp]'])? $_POST['num_comp]'] :''; 

$sql="INSERT INTO alloted_comp (comp_type,comp_name,num_comp) VALUES('$type','$name','$comp') "; 

對於更新查詢....

$qu= "UPDATE comp_controller SET num_comp=(num_comp-(SELECT num_comp FROM alloted_comp WHERE comp_name='$name')) WHERE comp_name ='$name' "; 
+0

該代碼易受SQL注入攻擊 –

+0

使用準備好的查詢或mysqli_real_escape_string來轉義變量。 –

+0

@HikmatSijapati謝謝你的回答,工作正常,但有減法問題。如果我輸入num_comp 1,它會減去值爲2或3或有時在comp_controller中的num_comp變爲0 – kiran

相關問題