最佳答案
我已经查看了所有其他 StackOverflow (和谷歌)的文章与同样的问题,但似乎没有解决我的问题。
我正在使用 PDO 和 PHP。
我的代码:
$vals = array(
':from' => $email,
':to' => $recipient,
':name' => $name,
':subject' => $subject,
':message' = >$message
);
print_r($vals);
try {
$pdo = new PDOConfig();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM messages WHERE `message` LIKE :message";
$q = $pdo->prepare($sql);
$q->execute(array(':message' => $vals[':message']));
$resp = $q->fetchAll();
foreach ($resp as $row) {
throw new Exception('Please do not post the same message twice!');
}
$sql = "INSERT INTO messages (from, to, name, subject, message) VALUES (:from, :to, :name, :subject, :message)";
$q = $pdo->prepare($sql);
$q->execute($vals);
}
catch(PDOException $e) {
echo $e->getMessage();
}
第一个 print _ r 给出
Array ( [:from] => abc@gmail.com
[:to] => lala@me.com
[:name] => abc
[:subject] => abc
[:message] => abc )
这是预期的(没有一个是空的)
但它输出错误
SQLSTATE [42000] : 语法错误或访问冲突: 1064您的 SQL 语法有错误; 请检查与您的 MySQL 服务器版本相对应的手册,找到正确的语法,以使用接近“ from,to,name,subject,message”的 VALUES (“ abc@gmail.com”,“ lala@me.com”在第1行
不知道怎么解决,有办法吗?