过去两天,我一直把头发拉过来。到目前为止,我已经确定了这个问题:
我使用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。
答案 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";
}