2016-12-27 49 views
0

我有3个表:控制器,allot_compnts和prev_allot_compnts,3代表具有相同的字段,当我点击提交按钮,在allot_compnts值复制到prev_allot_compnts和allot_compnts删除如何在MySQL中添加两个表中的两列?

代码:

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

//Insert 

$sql1="INSERT INTO prev_alloted_comp(id,comp_type,comp_name,num_comp) 
SELECT comp_type,comp_name,num_comp FROM alloted_comp WHERE id='$id'" ; 

//Delete 

$sql2="delete from alloted_comp where id='$id'"; 

//Here i'm trying to update controller table 

    if($type === 'Controller'){ 

     $sql3= "UPDATE comp_controller SET 
     num_comp=(num_comp+$_POST[num_comp]) WHERE comp_name ='$name' 
     ON DUPLICATE KEY UPDATE num_comp=num_comp+'$_POST[num_comp]'"; 

     } 

我试图更新基于$ _ POST [num_comp]在控制器表num_comp,但在控制表中的值不更新

我是新来这个,请任何一个可以帮助我如何做到这一点

更新:我刚刚更新了我的代码

[email protected]$_POST['submit'] 
    $type = isset($_POST['comp_type']); 
    $name = isset($_POST['comp_name']); 
    $comp = isset($_POST['num_comp']); 

//Insert 

$sql1="INSERT INTO prev_alloted_comp(id,comp_type,comp_name,num_comp) 
SELECT comp_type,comp_name,num_comp FROM alloted_comp WHERE id='$id'" ; 

//Delete 

$sql2="delete from alloted_comp where id='$id'"; 

//Here i'm trying to update controller table 

    if($type === 'Controller'){ 

     $sql3= "UPDATE comp_controller SET 
     num_comp=(num_comp+$_POST[num_comp]) WHERE comp_name ='$name'"; 

     } 

西尔不工作

+0

无效的语法'(num_comp + $ _ POST [num_comp])',正确地转义字符串,变量 – Thamilan

+0

@Thamilan实际上被解析并被'$ _POST'中的相应值替换。虽然它仍然是对sql注入课程的公开邀请。 (用一堆E_NOTICE来使用未定义的常量,但php在这一点上认为它是一个字符串) – ccKep

+0

@Thamilan,谢谢你的评论,我只是想添加帖子值,是否有任何修改'(num_comp + $ _POST [num_comp])' – kiran

回答

0

$sql$_POST['num_comp'] = 123变量被解析为UPDATE comp_controller SET num_comp=(num_comp+123) WHERE comp_name ='Some name' ON DUPLICATE KEY UPDATE num_comp=num_comp+'123'

可能的错误

  1. isset($_POST['num_comp'])? $_POST['num_comp'] :'';

如果num_comp未在POST请求中发送,则清空值num_comp。这将自动导致SET num_comp=(num_comp+)这不再是有效的SQL语句。

  • num_comp=num_comp+'$_POST[num_comp]'
  • 被解析为num_comp=num_comp+'123'。您尝试将字符串添加到数字。

  • ON DUPLICATE KEY UPDATE
  • 据我知道ON DUPLICATE KEY UPDATE仅与INSERT声明有效。