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 № 1No 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.