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

mlmlml@lily.freemail.ne.jp mlmlml @ lily.freemail.ne.jp
2006年 5月 10日 (水) 17:54:41 JST


tetuoです


使用方法には問題はないように見えますが、気になる点を一つ。

On Wed, 10 May 2006 17:25:14 +0900 (JST)
佐本 達義 <ttsamoto @ yahoo.co.jp> wrote:

>   $db = DB::connect(DSN, false) or die ("can't connect
> database.");

「or die」が何となく気になりますが、

<?php
if(DB::isError($db = $DB::connect(DSN, false))){
    die("can't connect database.");
}
?>
の方が良いのではないでしょうか?(読まれている本がどう指定してるか分かり
ませんが)

---
又は、コードはそのままに

var_dump($db)

を
>   $db = DB::connect(DSN, false) or die ("can't connect

この行の下に入れてみて、$dbが本当にDBオブジェクトかどうか確認してみて
はどうでしょう? $dbがDBオブジェクトでなく、DB_Errorオブジェクトとかであ
る場合は「getOne」のようなメソッドがないというようなエラーになると思いま
す。



>
>   $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);

また、sqlの書き方もより楽な方法があると思います。
例えば...

<?php
$sql = "select password from auth where username ? limit 1"
$password2 = $db->getOne($sql, $username);
?>




因みに、ドキュメントもありますので困った時はここを見るのも良いかもしれま
せん。

DB::isError()
DB::isError() -- 変数が DB_Error オブジェクトかどうかを調べる
http://pear.php.net/manual/ja/package.database.db.db.iserror.php


DB_common::getOne()
DB_common::getOne() -- クエリを実行し、最初の行の最初のカラムを返す
http://pear.php.net/manual/ja/package.database.db.db-common.getone.php

導入 - 準備と実行
導入 - 準備と実行 -- SQL 文を準備し、実行する
http://pear.php.net/manual/ja/package.database.db.intro-execute.php


tetuo
mlmlml @ lily.freemail.ne.jp



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