Mysql查询错误sql语法pdo

Mysql查询错误sql语法pdo,mysql,sql,syntax,pdo,Mysql,Sql,Syntax,Pdo,这是我试图运行的mysql代码: 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 Er

这是我试图运行的mysql代码:

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 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 */
我的目标是从CourseInformation表中获取id、courseid、title、info、lasteditedby,然后从user表中获取id、ForName和姓氏。其中userid与lastedby相同

我真的看不出我使用的sql语法有什么错误

:courseid
在我运行的其他pdo sql查询中


作为参考,这是我的php代码,其中包含sql

        $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 />';
        }
$courseid='G11111';
$sql=“从课程信息中选择i.id、i.courseid、i.title、i.info、i.lasteditedby、u.id、u.forename、u.lasteditedby作为u加入用户时的u.id(i.lasteditedby=u.id),其中i.courseid=:courseid按i.id顺序描述限制2”;
$sql->bindParam(“:courseid”,$courseid);
$sql->execute();
foreach($db->query($sql)作为$row){
回声';
echo$row['title']。
; echo$row['forename'].'.$row['names'..'..
; 回声' '; echo$row['info']; 回声'

; }
有人能告诉我怎么回事吗?
感谢阅读

您没有创建语句句柄,而是创建了字符串

委员会建议:

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

稍后用
$db->query
执行此字符串就是错误的结果,这表明您可能需要更好的示例,因为这似乎是同时应用的一些相互矛盾的技术。

我不明白
$sql
是一个字符串,因此对其调用
bindParam
会产生致命的PHP错误