不;如果行存在,则不插入


Doesn't insert if row exists

我使用这个和这个例子插入数据库,但我得到了一条错误消息:在非对象上调用成员函数execute()。如果我做INSERT INTO participants(email) VALUES ('$email'),反思也可以。我的错误在哪里?

$pdo = new PDO('sqlite:participants.db');
$insert = $pdo->prepare("INSERT INTO participants(email) SELECT $email WHERE NOT EXISTS(SELECT 1 FROM participants WHERE email = $email);");
$insert->execute();

UPD:

这就是var_dump($insert)给出的:

object(PDOStatement)#2 (1) {
  ["queryString"]=>
  string(65) "INSERT INTO participants (email) VALUES ('paekov@gmail.com')"
}

看起来您的查询需要一些修改。

$pdo = new PDO('sqlite:participants.db');
$insert = $pdo->prepare("INSERT INTO participants(email) SELECT :email WHERE NOT EXISTS(SELECT 1 FROM participants WHERE email = :email)");
$insert->execute(array(':email' => $email));