如何从 SQL 中的视图中选择? (一般错误:1615 Prepared statement需要重新准备)
Posted
技术标签:
【中文标题】如何从 SQL 中的视图中选择? (一般错误:1615 Prepared statement需要重新准备)【英文标题】:How to SELECT from a view in SQL? (General error: 1615 Prepared statement needs to be re-prepared) 【发布时间】:2017-11-28 19:49:38 【问题描述】:更新: 查询运行良好,如下所示;只有当我从视图中选择时才会出现错误。
$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
我创建的视图时收到以下错误。 (从表格中选择非常有效)。
带有消息“SQLSTATE[HY000]”的未捕获异常“PDOException”:一般错误:需要重新准备 1615 准备好的语句
使用时没有问题
SELECT * FROM Module
这是我的查询:
$query = "
SELECT * FROM module_info
";
$result = $DBH->prepare($query);
$result->execute();
$data = $result->fetchAll();
我创建的视图:
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);
【问题讨论】:
您使用的是什么 DBMS?您可以在视图中运行选择吗? 使用 mysql 数据库,使用工作台创建 SQL 脚本 @RadimBača @RadimBača 运行 SELECT * FROM module_info;在工作台中产生正确的输出,没有错误 以下链接已旧,但您是否考虑增加table_definitition_cache
? ***.com/questions/4380813/…
括号怎么了????括号太多了。
【参考方案1】:
本例的解决方法如下:
需要启用准备好的语句的模拟。
在连接文件中,下面一行
PDO::ATTR_EMULATE_PREPARES => false,
需要像这样改变:
PDO::ATTR_EMULATE_PREPARES => true,
在其他情况下,解决方案可能是增加table_definitition_cache
【讨论】:
以上是关于如何从 SQL 中的视图中选择? (一般错误:1615 Prepared statement需要重新准备)的主要内容,如果未能解决你的问题,请参考以下文章
如何使用从视图到控制器的 ViewBag 在 SQL Db 中存储多个复选框选择?
如何解决 Oracle Apex 中的“无法使用 DISTINCT、GROUP BY 等从视图中选择 FOR UPDATE”错误?