您的 SQL 语法有误;检查与您的MySQL服务器版本相对应的手册,了解在第1行“1”附近使用的正确语法


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 '1'' at line 1

当我写这段代码时,$this->setlist();这个错误,在写这一行之前我没有遇到任何错误,你能帮我解决这个问题吗?

public function setlist(){
    $mysql = new Mysql();
    $query = "SELECT * FROM student where cohortid = '$this->cohort' && programid = '$this->program && departmentid = '$this->department'";
    $mysql->execute($query);
    while($row = $mysql->fetch_array()){
        $this->list[] = $row;
    }
    array_unshift($this->list, "test");
    unset($this->list[0]);
}

public function display_id_firstname_and_lastname(){
    *$this->setlist();*
    $html = new Html();
    $html->table("table table-bordered");
    $html->row();
    $html->column(); echo "S#"; $html->closecolumn();  $html->column(); echo "FirstName"; $html->closecolumn(); $html->column(); echo "LastName"; $html->closecolumn();
    $html->closerow();
    foreach($this->list as $key => $value){
        $html->row();
        $html->column(); echo $key; $html->closecolumn(); $html->column(); echo $value['firstname']; $html->closecolumn();
        $html->column(); echo $value['lastname']; $html->closecolumn();
        $html->closerow();
    }
    $html->closetable();
}
首先,

您缺少一个变量周围的'

其次,您应该使用AND而不是&&

第三,如果要从对象属性中获取值,则在双引号字符串文本中使用时将字段包装在{}中。

$query = "SELECT * 
    FROM student 
    WHERE cohortid = '{$this->cohort}' 
      AND programid = '{$this->program}' 
      AND departmentid = '{$this->department}'";