Codeigniter活动记录插入功能

时间:2014-12-02 11:57:34

标签: php mysql codeigniter

过去两天,我一直把头发拉过来。到目前为止,我已经确定了这个问题:

我使用Active Record将一些简单数据插入数据库:

if($this->db->insert('table', $data)){
    return true;
}
else{
    return false;
}

问题是无论数据是否插入,它总是返回true。我怎么想到这一点是,在数据最终插入几次失败后,AUTO_INCREMENT ID为17,这意味着插入查询正在运行但未能插入,因此总是返回true。我想知道一种可靠的方法来了解是否插入了数据。尝试:

$this->db->affected_rows() > 0;

也是。但同样的问题占上风。它返回true。

4 个答案:

答案 0 :(得分:0)

如果您的表格中有自动增量ID,请检查$this->db->insert_id()

如果更大的零或我们的数字,那么我们可以说插入数据或

再次触发带有id的sql查询,如果记录存在,则插入数据

但我认为没有必要只检查insert_id

答案 1 :(得分:0)

这就是我的工作。这个对我有用。

$this->db->set($data)->insert($table_name);
if ($this->db->affected_rows()) {
     return $this->db->insert_id(); // or return true; in your case
}
return false;

答案 2 :(得分:0)

您需要先插入数据并在之后获得结果。你需要做这样的事情:

$this->db->insert('my_table', $my_data);
$is_inserted = $this->db->affected_rows() > 0;
if($is_inserted) {
    echo 'Yay! Its works!';
} else {
    echo 'Something went wrong. No insert ):'
}

您必须在获得结果之前执行插入查询。因此,您需要运行插入,然后获取受影响的行。 Codeigniter提供了类$this->db,可以帮助我们轻松完成这项工作。您甚至可以通过$this->db->insert_id()而不是$this->db->affected_rows()获取插入的ID来获取全新的插入ID。

您可能会发现这些链接很有用:

查询助手功能 - https://ellislab.com/codeigniter/user-guide/database/helpers.html

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

祝你好运!

答案 3 :(得分:0)

我总是为插入检查数据而执行此操作

$this->db->insert('table', $data);
$id = $this->db->insert_id();
if($id)
{
  echo "data inserted";
}
else
{
  echo "data not inserted"; 
}

你也可以这样做也适合我

$query = $this->db->insert('table', $data);
    if($query)
    {
      echo "data inserted";
    }
    else
    {
      echo "data not inserted"; 
    }