点码器活动记录插入功能


Codeigniter Active Record Insert Function

所以这两天我一直在为此拔头发。到目前为止,我已经确定了问题:

我正在使用活动记录将一些简单的数据插入数据库:

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

问题是无论是否插入数据,它总是返回 true。我是如何弄清楚这一点的,经过几次失败的尝试,当数据最终入时,AUTO_INCREMENT ID 为 17,这意味着插入查询正在运行但无法插入,因此始终返回 true。我想知道一种可靠的方法来了解数据是否入。试:

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

也。但同样的问题也普遍存在。它返回 true。

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

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

再次触发一个带有我们得到的 ID 的 SQL 查询,如果记录存在,则插入数据

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

您需要先插入数据,然后再获取结果。您将需要执行以下操作:

$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。您甚至可以让插入的 id 运行$this->db->insert_id()而不是$this->db->affected_rows()来获取全新的插入 id。

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

查询帮助程序函数 -https://ellislab.com/codeigniter/user-guide/database/helpers.html

活动记录类https://ellislab.com/codeigniter/user-guide/database/active_record.html

祝你好运!

>我总是这样做检查数据是否插入

$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"; 
    }

这就是我所做的。它对我有用。

$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;