0

我正在使用 SQLLite 中的一个简单用户表尝试 CodeIgniter,该表由 id、name、email 组成。

使用 Active Record 时如何防止插入重复项?

我尝试了以下方法,但它只是不断创建重复项......

$data = array(
  'email' => 'd@d.com' ,
  'name' => 'dave' 
);

$this->db->where('users.email != ', 'd@d.com');
$this->db->insert('users', $data); 
4

1 回答 1

0

如上所述添加唯一索引以确保完全安全。

然后你可以......做这样的事情:

$email = 'd@d.com';
$name = 'dave';

$this->db->query("
INSERT INTO users VALUES (email, name)
SELECT email, name
FROM (SELECT ? AS email, ? AS name) AS h
HAVING ! (SELECT COUNT(*) FROM users WHERE email = h.email)
", array($email, $name));
于 2012-06-25T21:52:00.453 回答