如何在MySQL数据库中减去一个基于另一个表值的表值?

时间:2016-12-26 08:35:21

标签: php mysql database

我有这个查询,这个工作正常

$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中使用了预定义值,但必须从后面的查询中获取comp_name

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

如何从第二个查询中获取第一个查询中的插入值

更新

我修改了我的代码

$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或有时使用垃圾值

2 个答案:

答案 0 :(得分: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' ";

答案 1 :(得分: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来转义变量。