0

私はSQLLiteの単純なusersテーブルで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

完全な安全のために、前述のように UNIQUE INDEX を追加します。

次に、次のようなことができます:

$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 に答える