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 respuestaHe 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] => abc@gmail.com
[:to] => lala@me.com
[: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 (' abc@gmail.com ',' lala@me.com 'en la línea 1
No tengo idea de cómo solucionar esto. ¿algunas ideas?