プロが教える店舗&オフィスのセキュリティ対策術

初心者です。
今テストで下記構文を試しましたがエラーになります。
prepareがインストールされていないのでしょうか?
どなたかご教授お願いします。

エラー内容↓
Fatal error: Call to undefined method DB_Error::prepare()

テスト構文↓
<?php
require_once("DB.php");
$db=DB::connect("sqlite://localhost/samples.db");
$stt=$db->prepare("CREATE TABLE article (url,title,published)");
$stt=$db->execute();
$db->disconnect($stt);
?>

A 回答 (2件)

connectで、ちゃんとデータベース接続はできていますか? $dbはどういう状態になっているでしょうか? まずはこの点を確認されてはどうでしょう。



見たところSQLiteと思うのですが、SQLite自体は利用できる状態になっているでしょうか。PHP5.1.4とかだと、初期状態ではphp_sqlite.dllはコメントアウトされていた気がするんですが、php.iniの設定などはきちんとできているでしょうか?

以上の2点が気になりました。

この回答への補足

ご回答有難うございます。
2点調べてみました。
まず、データーベースへの接続は出来ていました。

$db=DB::connect("sqlite://localhost/samples.db");
の直後に
if($db){echo "get db!!!";}else{echo "nothing db";}

挿入しましたら"get db!!!"と出力されました。


次に、php.iniのphp_sqlite.dll設定は確かにコメントアウトされていました。
;を外して保存し、Apacheを再起動させて再度表示させてみたのですがやはり、同じく
Fatal error: Call to undefined method DB_Error::prepare()
のエラー表示なのです。

また、他にも気になる点がありましたら
宜しくお願いします。

補足日時:2006/08/15 11:36
    • good
    • 0

Fatal error: Call to undefined method DB_Error::prepare()


「定義されていないメソッド DB_Error::prepare() を呼び出した」
と怒っています。

$db=DB::connect()でエラーになってDBエラーオブジェクトが返って
きたわけです。

>if($db){echo "get db!!!";}else{echo "nothing db";}
>を
>挿入しましたら"get db!!!"と出力されました。
これは当たり前ですね。エラーのときはエラーオブジェクトを返すのですから。。。
正しくは、
$db = DB::connect($dsn);
if (DB::isError($db)) {
print DB::errorMessage($db) . "<BR>";
print $db->getUserInfo() . "<BR>";
.......
}
これで、接続できなかった原因がわかるはずです。

>$stt=$db->execute();
execute()には、パラメータが必要なはずですが。。。

>"CREATE TABLE article (url,title,published)"
このSQLあっているのでしょうか?
SQLiteでは、
CREATE TABLE article (url text,title text,published text)
とかのデータタイプは必要ないのですか?

PEARのマニュアルはご覧になりましたでしょうか?
マニュアルを読むことをお勧めします。

参考URL:http://phpspot.net/php/man/pear/package.database …

この回答への補足

ご指摘有難うございます。

エラーオブジェクトの内容は
not found
Unable to include the DB/.php file for ''
でした。確かに接続できてませんでした。

実はPEARは勉強始めたところで何も分かっていないのです。
マニュアル見て勉強してみます。
有難うございました。

補足日時:2006/08/16 07:28
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!