我正试图通过这样做在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'