SQL查询失败在微软访问,工作在MYSQL


SQL Query failing on Microsoft Access, working on MYSQL

我正试图通过这样做在Microsoft Access数据库上运行查询

$ticket_time = $db->prepare("SELECT problems.start_date,
                                    problems.rep,
                                    problems.id,
                                    tblusers.fname,
                                    tblnotes.id,
                                    tblnotes.note
                                    FROM problems
                                    RIGHT JOIN tblusers ON problems.rep = tblusers.sid
                                    RIGHT JOIN tblnotes ON problems.id = tblnotes.id
                                    WHERE `start_date` > '$history' 
                                    AND status BETWEEN 1 AND 8
                                    GROUP BY start_date
                                    ORDER BY start_date ASC");
$ticket_time->execute();
while ($row = $ticket_time->fetch(PDO::FETCH_ASSOC))
{
    //Do things
}

这个查询工作时,我连接到mysql数据库,但生产数据库是微软访问。这个相同的查询,当连接到MS Access数据库时返回

Fatal error: Call to a member function execute() on a non-object on line 84

第84行为$ticket_time->execute();

A var_dump($ticket_time);返回boolean false,而连接到MS Access数据库,但返回如预期的,而连接到MYSQL数据库,这导致我相信可能有问题的查询,而连接到MS Access数据库,但我不知道从哪里开始故障排除。

是什么原因导致的?

首先,MS Access不支持反引号来描述列标识符,而是使用方括号,因此您必须更改

WHERE `start_date` > '$history'

WHERE [start_date] > '$history'

或者

WHERE start_date > '$history'