概要
状態:-
閲覧数:12,136
投稿日:2010-10-31
更新日:2013-10-04
直訳
・○○ファイルの△△行目付近(以前)にある、定義されていないexecute() メソッドを呼び出したことによる、致命的エラー
※該当オブジェクトの中にexecute関数が定義されていないエラー
意訳
・MDB2の中にexecute関数が定義されていない、というわけではなく、適切なオブジェクトが返ってきていないため、そのオブジェクトの中にexecuteが定義されていない、というエラー
・具体的には、期待された$mdb2->prepare()の結果ではなく、MDB2のERRORオブジェクトが返ってきているため、そのERRORオブジェクトの中にexecute関数はありませんよ、というエラー
・致命的エラー
・○○ファイルの△△行目付近(以前)にある、定義されていないexecute() メソッドを呼び出したことによる、致命的エラー
※該当オブジェクトの中にexecute関数が定義されていないエラー
意訳
・MDB2の中にexecute関数が定義されていない、というわけではなく、適切なオブジェクトが返ってきていないため、そのオブジェクトの中にexecuteが定義されていない、というエラー
・具体的には、期待された$mdb2->prepare()の結果ではなく、MDB2のERRORオブジェクトが返ってきているため、そのERRORオブジェクトの中にexecute関数はありませんよ、というエラー
エラーメッセージ
Fatal error: Call to undefined method MDB2_Error::execute() in ○○ on line △△
エラーレベル
・致命的エラー
遭遇例1.存在する間違ったデータベース名を指定
遭遇例
存在する間違ったデータベース名を記述
・意図したデータベースと違うデータベースを記述してしまうと、データベースへの接続には成功するが、意図したテーブル等が見つからないため、上記エラーが発生
エラー補足
・下記記述では、上記エラーを捕捉出来ない
if (PEAR::isError($mdb2)) {
exit('データベースへの接続に失敗しました');
}
補足できない理由
・データベース接続エラーではなく、接続自体は出来ているため
・単に違うデータベースへ接続した結果、そこに目的のテーブルがなかったために起こるエラーのため
対応例
案1.var_dump();
・準備したステートメントに対して、var_dump
$sth=$mdb2->prepare($sql,$type,MDB2_PREPARE_MANIP);//変更の伴うSQLの場合にMDB2_PREPARE_MANIPを追記
echo "<pre>";
var_dump($sth);
echo "</pre>";
・MDB2 Error: no such table みたいなメッセージが、確認できる
object(MDB2_Error)#4 (8) {
["error_message_prefix]=>
string(0) ""
["mode]=>
int(1)
["level]=>
int(1024)
["code]=>
int(-18)
["message]=>
string(25) "MDB2 Error: no such table"echo
案2.getDebugInfo();
if (PEAR::isError($sth)){
echo $sth->getDebugInfo();
exit();
}
Fatal error: Class declarations may not be nested in ○○ on △△
Fatal error: Cannot redeclare 関数名() (previously declared in ファイル名:○○) in ファイル名