2017-11-28 14 views
2

更新: クエリは次のように完全に動作しています。ビューから選択するとエラーが単独で表示されます。SQLのビューからSELECTする方法は? (一般的なエラー:1615準備されたステートメントを再準備する必要があります)

$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に次のエラーが表示されます。 (テーブルから選択すると完璧に動作します)。

Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1615 Prepared statement needs to be re-prepared'

ここ

SELECT * FROM Module 

は私のクエリで使用しているとき、私は何の問題を持っていません:このインスタンスで

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); 
+0

何を増加するかもしれ表示されますDBMSを使用していますか?あなたはビューで選択を実行することができますか? –

+0

MySQLデータベースを使用して、workbenchを使用してSQLスクリプトを作成する@RadimBača – Xander

+0

@RadimBačaSELECT * FROM module_info;ワークベンチのエラー出力が正しく出力されない – Xander

答えて

1

解決した

$query = " 
SELECT * FROM module_info 
"; 

$result = $DBH->prepare($query); 
$result->execute(); 
$data = $result->fetchAll(); 

私が作成したビューを次のようになります。

準備済みステートメントのエミュレーションを有効にする必要があります。接続ファイルで

、次の行

PDO::ATTR_EMULATE_PREPARES => false, 

はそうのように変更する必要があります。他の事例では

PDO::ATTR_EMULATE_PREPARES => true, 

を、解決策がtable_definitition_cache

関連する問題