更新: 该查询工作正常,如下所示;仅当我从 View 中进行选择时才会出现该错误。
$query = "
SELECT ModuleID, ModuleName, Credits, Lecturer, Room, EmployeeID, Forename, Surname, RoomID, RoomCode
FROM ((Module
INNER JOIN Employee ON Module.Lecturer = Employee.EmployeeID)
INNER JOIN Room ON Module.Room = Room.RoomID)
";
$result = $DBH->prepare($query);
$result->execute();
$data = $result->fetchAll();
尝试SELECT * FROM
我创建的 View 时收到以下错误。 (从表格中选择效果很好)。
Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1615 Prepared statement needs to be re-prepared'
我使用时没有任何问题
SELECT * FROM Module
这是我的查询:
$query = "
SELECT * FROM module_info
";
$result = $DBH->prepare($query);
$result->execute();
$data = $result->fetchAll();
我创建的 View :
CREATE VIEW module_info
AS
SELECT ModuleID, ModuleName, Credits, Lecturer, Room, EmployeeID, Forename, Surname, RoomID, RoomCode
FROM ((Module
INNER JOIN Employee ON Module.Lecturer = Employee.EmployeeID)
INNER JOIN Room ON Module.Room = Room.RoomID);
最佳答案
本例的解决方案如下:
需要启用准备语句的模拟。
在连接文件中,以下行
PDO::ATTR_EMULATE_PREPARES => false,
需要像这样改变:
PDO::ATTR_EMULATE_PREPARES => true,
在其他情况下,解决方案可能是增加table_definitition_cache
关于php - 如何从 SQL View 中进行 SELECT? (一般错误: 1615 Prepared statement needs to be re-prepared),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47539775/