Ben aynı sorunu ile tüm diğer stackoverflow (ve google) mesaj yoluyla baktım, ama hiçbiri benim sorunu çözmek için görünüyordu.
Ben pdo ve php kullanıyorum.
Benim kod:
$vals = array(
':f'=>$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 AND `from` = :f";
$q = $pdo->prepare($sql);
$q->execute(array(':message' => $vals[':message'], ':f' => $vals[':f']));
$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 (:f, :to, :name, :subject, :message)";
$q = $pdo->prepare($sql);
$q->execute($vals);
}
catch(PDOException $e) {
echo $e->getMessage();
}
ve birinci print_r verir
Array ( [:from] => abc@gmail.com [:to] => lala@me.com [:name] => abc [:subject] => abc [:message] => abc )
beklenen (yok null)
ancak bu hatayı verir
Sqlstate [42000]: sözdizimi hatası veya erişim ihlali: 1064 Kendi SQL sözdizimi bir hata var; line 1 jonah@j.com ',' lala@me.com ',' jona ', adı, konu, mesaj) VALUES (için yakınındaki kullanılacak doğru sözdizimi için MySQL sunucu sürümü karşılık kılavuzunu kontrol
Bu nasıl düzeltmek için hiçbir fikrim yok ... fikirler?