SQLSTATE [42000]: Error de sintaxis o infracción de acceso: 1064 Tiene un error en su sintaxis SQL - PHP - PDO [duplicado]

Esta pregunta ya tiene una respuesta aquí:

Error de sintaxis debido al uso de una palabra reservada como nombre de tabla o columna en MySQL 1 respuesta

He revisado todas las otras publicaciones de StackOverflow (y google) con el mismo problema, pero ninguna parecía resolver mi problema.

Estoy usando PDO y PHP.

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

y el primer print_r da

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

que se espera (ninguno es nulo)

pero genera el error

SQLSTATE [42000]: Error de sintaxis o infracción de acceso: 1064 Tiene un error en su sintaxis de SQL; consulte el manual que corresponde a la versión de su servidor MySQL para obtener la sintaxis correcta para usar cerca de 'from, to, name, subject, message) VALUES (' [email protected] ',' [email protected] 'en la línea 1

No tengo idea de cómo solucionar esto. ¿algunas ideas?

Respuestas a la pregunta(4)

Su respuesta a la pregunta