mysql:使用准备好的查询中的列值更新现有列

时间:2017-05-26 06:37:48

标签: php mysql mysqli

旧查询就像这样

update tbl_order set `pack_id` =0, `pack_down_count`=pack_down_count + '".intval($_POST['item_number'])."',`price`='".$_POST['mc_gross']."', `otime`=Now(), `ptime`=Now(), status='paid', pack_download=pack_download + '".intval($_POST['item_number'])."' where member_id='".$_MYVAR['userid']."'"

我喜欢将其更改为准备好的语句,我使用的是https://github.com/joshcam/PHP-MySQLi-Database-Class

中的一个类

用于更新

我将上述查询更改为

       $data = array(
       'pack_id'              =>$_MYVAR['pack_id'], 
       'pack_apply_count'      =>`pack_apply_count` + intval($_POST['item_number']),
       'price'                =>$_POST['mc_gross'], 
       'otime'                =>date('Y-m-d H:i:s'), 
       'ptime'                =>date('Y-m-d H:i:s'), 
       'status'               =>'paid', 
       'pack_apply'        =>`pack_apply` + intval($_POST['item_number'])
       );
       $db->where('member_id',$_MYVAR['userid']);
       $db->update("tbl_order",$data);

也尝试了没有反叛的pack_apply_count和pack_apply,但没有更新我的表

       $data = array(
       'pack_id'              =>$_MYVAR['pack_id'], 
       'pack_apply_count'      =>pack_apply_count + intval($_POST['item_number']),
       'price'                =>$_POST['mc_gross'], 
       'otime'                =>date('Y-m-d H:i:s'), 
       'ptime'                =>date('Y-m-d H:i:s'), 
       'status'               =>'paid', 
       'pack_apply'        =>pack_apply + intval($_POST['item_number'])
       );
       $db->where('member_id',$_MYVAR['userid']);
       $db->update("tbl_order",$data);

请告诉您更新表格的正确方法

1 个答案:

答案 0 :(得分:1)

您提供的链接将为您提供所需的信息,请参阅更新查询部分。

您似乎可以使用$db->inc($_POST['item_number'])

增加

如示例所示:

$data = Array (
    'firstName' => 'Bobby',
    'lastName' => 'Tables',
    'editCount' => $db->inc(2),
    // editCount = editCount + 2;
    'active' => $db->not()
    // active = !active;
);