[PHP-users 29162] Re: PEAR の getone() が使えない

egis@csc.jp egis @ csc.jp
2006年 5月 10日 (水) 17:45:57 JST


いわせといいます。

pear の DB ですよね。

DB::connectに失敗してます。

pearのマニュアル見れば即解決かと思うのですが、DB::connectは失敗時でも
「DB_Errorオブジェクト」を返すので、評価しても偽にはなりません。

ですので戻り値の評価は

 if (PEAR::isError($db))

な感じでにしなければなりません。

http://peardoc.xole.net/package.database.db.intro-connect.html
やその関連ページが参考になるかと思います。


佐本 達義 wrote:
> はじめまして、samottyと申します。
> 
> 現在、書籍「PHP5徹底攻略 エキスパート編」のサンプルを試
> している最中ですが、その際、エラー表示されてしまい、どう
> してもわからなかったので、こちらに質問させてください。
> 
> 現象:
> 
> ローカル環境で、Apache、PHP5、MySQL5、を構築し
> 、サンプルPHPスクリプトを実行したところ、ブラウザ上に
> 
> Fatal error: Call to undefined method DB_Error::getOne()
> in C:\Program 
> Files\Apache Group\Apache2\htdocs\5-1\basic1.php on line
> 23
> 
> とエラー表示されてしまいます。スクリプトは次のようになり
> ます。
> 
> <?php
> require_once 'DB.php';
> 
> define('DSN','mysql://root:is_180ts@localhost/user_db');
> 
> 
>   ・・・
> 
>   $db = DB::connect(DSN, false) or die ("can't connect
> database.");
>   
>   $username = addslashes($_SERVER['PHP_AUTH_USER']);
>   $password1 = addslashes($_SERVER['PHP_AUTH_PW']);
> 
>   $sSQL = sprintf("SELECT password FROM auth WHERE
> username='%s' LIMIT 1", 
> $username); 
>   $password2 = $db->getOne($sSQL);
> ----------------------------------------------------------------------------------------------------
> 
> 
> 
> ユーザ認証スクリプトのサンプルです。たぶんgetOne()を読み
> 込めていないと思います。調べてみると、DB.phpにgetone()が
> なく、どうやら、common.phpにgetone()が存在しているようで
> すが、common.phpにパスを通しても同じエラーが出力されてし
> まいます。
> 
> どなたか、アドバイス、または、回答をお持ちの方、お忙しい
> 中恐縮ですが教え
> ていただけませんか?
> 
> 環境:WindowsXP, Apache_2.0.58, php5.0.4, mysql4.0.26
> 
> --------------------------------------
> Yahoo! JAPAN 10th Anniversary Special Feature
> --- Enjoy Yahoo! Auction with Yahoo! Mail !! ---
> http://pr.mail.yahoo.co.jp/auction/
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3
> 
> 



PHP-users メーリングリストの案内