Sqlstate [42000]: sözdizimi hatası veya erişim ihlali: Sen € "PHP â €" PDO â SQL sözdizimi bir hata var 1064

0 Cevap php

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?

0 Cevap