[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 メーリングリストの案内