/ Error de consulta / Mysql pdo sintaxis de SQL: mysql, sql, sintaxis, pdo

Error de consulta Mysql sintaxis sql pdo - mysql, sql, syntax, pdo

Este es el código mysql que estoy intentando ejecutar:

SELECT i.id, i.courseid, i.title, i.info, i.lasteditedby, u.id, u.forename, u.surname
FROM courseinformation as i JOIN users AS u ON (i.lasteditedby = u.id)
WHERE i.courseid = :courseid
ORDER BY i.id desc LIMIT 2;

Estoy recibiendo este error:

/* SQL Error (1064): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ":courseid ORDER BY i.id desc LIMIT 2" at line 1 */

Mi objetivo es obtener id, courseid, title, info, editado por última vez en la tabla CourseInformation, y luego en Id, nombre y apellido de la tabla de usuarios. Donde el ID de usuario es el mismo que el último editado por.

Realmente no puedo ver qué sintaxis de SQL está mal como la que he usado

:courseid

en otras consultas pdo sql que he ejecutado


para referencia, este es mi código php con ese sql en

        $courseid = "G11111";
$sql = "SELECT i.id, i.courseid, i.title, i.info, i.lasteditedby, u.id, u.forename, u.surname FROM courseinformation as i JOIN users AS u ON (i.lasteditedby = u.id) WHERE i.courseid = :courseid ORDER BY i.id desc LIMIT 2";
$sql->bindParam(":courseid", $courseid);
$sql->execute();

foreach ($db->query($sql) as $row) {
echo "<div class="announceTitle">";
echo $row["title"]."<br />";
echo $row["forename"]." ".$row["surname"]."<br />";
echo "</div>
<div class="announceText">";
echo $row["info"];
echo "</div>
<br />
<br />";
}

¿Podría alguien, por favor, señalarme la dirección de lo que está mal? Gracias por leer

Respuestas

0 para la respuesta № 1

No has creado un identificador de declaración, has creado una cadena.

los tutorial recomienda esto:

$sth = $db->prepare("SELECT i.id, i.courseid, i.title, i.info, i.lasteditedby, u.id, u.forename, u.surname FROM courseinformation as i JOIN users AS u ON (i.lasteditedby = u.id) WHERE i.courseid = :courseid ORDER BY i.id desc LIMIT 2");
$sth->bindParam(":courseid", $courseid);

Que luego ejecutes esta cadena con $db->query es donde se produce el error, y es una señal de que probablemente necesite mejores ejemplos para trabajar, ya que parece que se están aplicando algunas técnicas contradictorias al mismo tiempo.