使用codeigniter中的Where和Where条件更新SQL

时间:2012-12-25 03:26:49

标签: mysql sql codeigniter activerecord

这是我的代码:

public function remove_employee( $emp_no, $now ) {
    $this->db->delete('employees', array('emp_no' => $emp_no));
    $this->db->flush_cache();

    $this->db->start_cache();
    $this->db->where('emp_no', $emp_no);
    $this->db->where('to_date', '9999-01-01');
    $this->db->update('dept_emp', array('to_date' => $now));
    $this->db->stop_cache();
    $this->db->flush_cache();   

    $this->db->start_cache();
    $this->db->where('emp_no', $emp_no);
    $this->db->where('to_date', '9999-01-01');
    $this->db->update('salaries', array('to_date' => $now));
    $this->db->stop_cache();
    $this->db->flush_cache();   

    $this->db->start_cache();
    $this->db->where('emp_no', $emp_no);
    $this->db->where('to_date', '9999-01-01');
    $this->db->update('titles', array('to_date' => $now));
    $this->db->stop_cache();
    $this->db->flush_cache();   

    return;
} //END REMOVE EMPLOYEE

当我运行此代码时,它删除了我的记录。我不明白为什么。

我希望它: 更新 WHERE CONDITION_1 AND CONDITION_2 = B

PS:

**$now** is todays date (i.e. 2012-12-25)
**$emp_no** is a unique employee number i.e. 500122

1 个答案:

答案 0 :(得分:1)

调试此方法的可能方法是注释掉$this->db->delete()

尝试更改这些行:

$this->db->delete('employees', array('emp_no' => $emp_no));
$this->db->flush_cache();

要:

//$this->db->delete('employees', array('emp_no' => $emp_no));
//$this->db->flush_cache();

然后尝试一下,看看你的记录是否还在那里。如果您的更新成功并且您的记录仍在表格中,则可能使用删除级联来使用外键。这意味着如果您从employees表中删除记录,您还将从dept_empsalariestitles删除记录。

CodeIgniter Active Record Class:http://ellislab.com/codeigniter/user-guide/database/active_record.html

InnoDB外键:http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html

检查外键:How do I see all foreign keys to a table or column?