2015-02-08 83 views
1

我使用thisthis示例对数据库执行插入操作,但我收到了一条错误消息:调用非成员函数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 ('[email protected]')" 
} 
+0

你可以使用SQLite功能'INSERT或忽略INTO(电子邮件)VALUES( '$电子邮件')的参与者;' – sectus 2015-02-08 10:19:51

+0

你可以发布什么'的var_dump($插入)'给? – 2015-02-08 10:22:18

+0

可能重复[参考 - 在PHP中这个错误的意思是什么?](http://stackoverflow.com/questions/12769982/reference-what-does-this-error-mean-in-php) – sectus 2015-02-08 10:22:21

回答

1

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

$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)); 
+0

非常感谢! – rel1x 2015-02-08 21:09:16

相关问题