SQLSTATE [42000]: Erro de sintaxe ou violação de acesso: 1064 Você tem um erro na sua sintaxe SQL - PHP - PDO [duplicado]

Esta pergunta já tem uma resposta aqui:

Erro de sintaxe devido ao uso de uma palavra reservada como nome de tabela ou coluna no MySQL 1 resposta

Examinei todas as outras postagens StackOverflow (e google) com o mesmo problema, mas nenhuma parecia resolver o meu problema.

Estou usando DOP e PHP.

Meu código:

$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();
}

e o primeiro print_r fornece

Array ( [:from]    => [email protected] 
        [:to]      => [email protected] 
        [:name]    => abc 
        [:subject] => abc 
        [:message] => abc )

o que é esperado (nenhum é nulo)

mas gera o erro

SQLSTATE [42000]: Erro de sintaxe ou violação de acesso: 1064 Você possui um erro na sintaxe do SQL; verifique o manual que corresponde à versão do servidor MySQL para a sintaxe correta a ser usada perto de 'from, to, name, subject, message) VALUES (' [email protected] ',' [email protected] 'na linha 1

Não faço ideia de como consertar isso. alguma ideia?

questionAnswers(4)

yourAnswerToTheQuestion