2017-09-26 132 views
0

在codeigniter中遇到问题。我有以下查询:加入codeigniter的Sql更新

UPDATE 
    tbl_print_title 
INNER JOIN tbl_jp_lookups ON tbl_print_title.title_id = tbl_jp_lookups.id 
SET 
    tbl_print_title.is_delete = 1, 
    tbl_jp_lookups.is_delete = 1 
WHERE 
    tbl_print_title.id = 5 

我想写在codeigniter的查询生成器结构中。它在phpmyadmin中工作正常。我尝试了以下,但它不起作用。请提供建议。

$this->db->set('prt.is_delete', '!is_delete'); 
$this->db->set('lk.is_delete', '!is_delete'); 
$this->db->where('prt.id',$id);  
$this->db->update(TBL_PRINT_TITLE." as prt"); 
$this->db->join(TBL_JP_LOOKUPS." as lk", 'prt.title_id=lk.id'); 
if($this->db->affected_rows() > 0) { 
return 1; 
} else { 
return 0; 
} 

回答

0

更新您的代码如下,首先加入则表更新下订单

$this->db->set('prt.is_delete', '!is_delete'); 
$this->db->set('lk.is_delete', '!is_delete');  
//$this->db->join(TBL_JP_LOOKUPS." as lk", 'prt.title_id=lk.id'); 
$this->db->where('prt.id',$id);  
$this->db->update(TBL_PRINT_TITLE." as prt INNER JOIN ". TBL_JP_LOOKUPS." as lk ON prt.title_id = lk.id"); 

if($this->db->affected_rows() > 0) { 
return 1; 
} else { 
return 0; 
} 
+0

给出一个错误: 错误编号:1054 未知列在“字段列表”“lk.is_delete” UPDATE'tbl_print_title'如'prt' SET'prt'.'is_delete' ='!is_delete','lk'.'is_delete' ='!is_delete'WHERE'prt'.'id' ='5' 文件名:D:/ xampp/htdocs/smartquote /system/database/DB_driver.php 行号:691 –

+0

你会尝试编辑答案吗? –

+0

生成此查询并引发错误。反引号删除可能会工作。我们可以在更新查询中防止反引号。 UPDATE'tbl_print_title为PRT INNER JOIN tbl_jp_lookups'为'LK ON prt'.'title_id = lk'.'id' SET'prt'.'is_delete' = '!is_delete','lk'.'is_delete' =' !is_delete'WHERE'prt'.'id' ='2' –

0

使用。 这将首先定义别名,然后执行操作

$this->db->update(TBL_PRINT_TITLE." as prt"); 
$this->db->join(TBL_JP_LOOKUPS." as lk", 'prt.title_id=lk.id'); 
$this->db->set('prt.is_delete', '!is_delete'); 
$this->db->set('lk.is_delete', '!is_delete'); 
$this->db->where('prt.id',$id);  
if($this->db->affected_rows() > 0) { 
return 1; 
} else { 
return 0; 
} 
+0

也会给出错误: 您必须使用“set”方法更新条目。 文件名:D:/xampp/htdocs/smartquote/system/database/DB_query_builder.php 行号:1864 –