如果行存在则不插入

Doesn't insert if row exists

我使用 this and this 示例对数据库进行了插入操作,但我收到一条错误消息:调用非对象上的成员函数 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));