Php 致命错误:未捕获异常';PDO异常';带有消息';SQLSTATE[42000]:4

Php 致命错误:未捕获异常';PDO异常';带有消息';SQLSTATE[42000]:4,php,mysql,Php,Mysql,我一直在做一个学校的项目,我没有问题去做,突然这个错误出现了。我没有对代码进行编辑。当我再次运行它时,会出现此错误 致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解第7行“”附近要使用的正确语法 这是我得到的另一个错误 PDOException:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;请查看与MySQL服务器版本对应的

我一直在做一个学校的项目,我没有问题去做,突然这个错误出现了。我没有对代码进行编辑。当我再次运行它时,会出现此错误

致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解第7行“”附近要使用的正确语法 这是我得到的另一个错误

PDOException:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解第7行“”附近要使用的正确语法

这就是我提出的问题。我真的找不到问题所在

    class Subject {        

    function getSubjectList($id) {
        global $db;            

        $sql = "SELECT class_id, c.subject_id, subject_desc, units, day, time
                FROM class c 
                JOIN subject s 
                ON  c.subject_id = s.subject_id
                JOIN lecturer l 
                ON c.lec_id = l.lec_id 
                WHERE l.lec_id = $id";

        $stmt = $db->query($sql);

        while($r = $stmt->fetch()) {
            $result[] = $r['class_id'];
            $result[] = $r['subject_id'];
            $result[] = $r['subject_desc'];
            $result[] = $r['units']; 
            $result[] = $r['day'];
            $result[] = $r["time"];
            $result[] = $r['class_id'];
        }

        return $result;            
    }
}

在此查询中,必须指定联接类型:

请看下面的示例:


我建议您将查询参数化。您是否尝试回显该查询以查看其外观<代码>echo$sql;模具()对不起,我对这个很陌生,但是我该怎么做呢?很可能是因为
$id
是一个空字符串?(是的,使用准备好的语句)浏览此页面:它解释如何向查询添加参数。有关更多详细信息,请参阅手册:我已经解决了它。问题在于通过函数传递的数据就是问题所在。$id确实是空的。谢谢@Wrikken
SELECT class_id, c.subject_id, subject_desc, units, day, time
                FROM class c 
                INNER JOIN subject s 
                ON  c.subject_id = s.subject_id
                INNER JOIN lecturer l 
                ON c.lec_id = l.lec_id 
                WHERE l.lec_id = $id;