2006-06-17 (土)
■ Ethna で PDO を使うサンプル (2)
以前書いたサンプルだが、 AppManager クラスを継承させた方が楽 (というか、そうすべき)だと分かったので、 こんな風に書き直していた。
<?php
class Sample_UserManager extends Ethna_AppManager
{
function auth($mailaddress, $password)
{
$sql = 'SELECT password FROM user WHERE email=?';
$dbh =& $this->backend->getDB();
$stmt = $dbh->prepare($sql);
$stmt->bindparam(1, $mailaddress);
$stmt->execute();
$md5pass = $stmt->fetchcolumn();
$stmt->closeCursor();
if ($md5pass != md5($password)) {
return Ethna::raiseNotice('パスワードが違います', E_SAMPLE_AUTH);
}
return 0;
}
}
?>
つまり、データベース接続用のオブジェクトを、
$dbh =& $this->backend->getDB();
とすることで得ていた。
ところで、Ethna_AppManager クラスには $db というプロパティがある。 この $db は $this->backend->getDB(); を実行するまで 設定されないと思っていたのだが、 よく調べると、コンストラクタの中で間接的に getDB() を呼んでいた。 ということで、getDB() を自分でいちいち呼びだす必要は無い。 コードも以下のようにすっきりと書ける。
<?php
class Sample_UserManager extends Ethna_AppManager
{
function auth($mailaddress, $password)
{
$sql = 'SELECT password FROM user WHERE email=?';
$stmt = $this->db->prepare($sql);
$stmt->bindparam(1, $mailaddress);
$stmt->execute();
$md5pass = $stmt->fetchcolumn();
$stmt->closeCursor();
if ($md5pass != md5($password)) {
return Ethna::raiseNotice('パスワードが違います', E_SAMPLE_AUTH);
}
return 0;
}
}
?>
ただし、試してはいないが、 リードオンリーで接続したいとかいう場合は、 改めて getDB() を使ってデータベース接続するのだと思う。
[コメントを書く]
本日のリンク元
- 4 google検索(Ethna_AppManager)
- 3 google検索(md5pass)
- 2 http://www.revulo.com/
- 2 google検索(pdo prepare サンプル)
- 2 google検索(getDB ethna)
- 2 google検索(Ethna_AppManager DB)
- 2 google検索(Ethna DB接続サンプル)
- 2 google検索(Ethna_AppManager)
- 2 google検索($this->backend->getDB())
- 2 google検索($stmt->closeCursor();)
- 2 google検索(AppManager Plugin 違い)
- 2 google検索(ethna appmanager prepare)
- 2 http://72.14.235.104/search?q=cache:xwVbPuUutMMJ:w...
- 1 google検索($db =)
- 1 google検索(ethna getDB)
- 1 google検索(ethna db エスケープ)
- 1 google検索(ethna appManager)
- 1 google検索(backend->getDB)
- 1 google検索(PHP PDO サンプル)
- 1 google検索(PDO サンプル)
- 1 google検索(ethna db 接続)
- 1 google検索(extends PDO)
- 1 google検索(pdo に extends)
- 1 google検索(ethna getDB)
- 1 google検索(backend->getDB())
- 1 google検索(PDO class extend)
- 1 google検索($this->backend->getDB();)
- 1 google検索(php pdo サンプル)
- 1 google検索(pdo サンプル)
- 1 google検索(Zend Framework closeCursor)
- 1 google検索(getDb())
- 1 google検索(ethna getDB)
- 1 google検索(E_SAMPLE_AUTH)
- 1 google検索(class の中で getDB())
- 1 google検索(ethna getDB)
- 1 google検索(PDO クラス サンプル)
- 1 google検索($this->backend->getDB)
- 1 google検索(t)
- 1 google検索(t)
- 1 google検索(Ethna PDO bindParam)
- 1 google検索(stmt execute PDO)
- 1 google検索(php pdo mysql サンプル)
- 1 google検索(php pdo サンプル)
- 1 google検索(php getDBは)
- 1 google検索(pdo extends php)
- 1 google検索(ethna getDB)
- 1 google検索(ethna db 接続)
- 1 google検索(ethna db 接続)
- 1 google検索(ethna backend サンプル)
- 1 google検索(ethna 書き直し php)
- 1 google検索(ethna データベース接続)
- 1 google検索(ethna $this->backend->getDB())
- 1 google検索(ethna prepare DB)
- 1 google検索(ethna pdo)
- 1 google検索(closeCursor)
- 1 google検索(backend->getDB)
- 1 google検索(backend ethna getDB)
- 1 google検索(appManager ethna サンプル)
- 1 google検索(Zend prepare closeCursor(); )
- 1 google検索(PDO サンプル function)
- 1 google検索(PDOで接続 方法)
- 1 google検索(Ethna_AppManager)
- 1 google検索(Ethna_AppManager)
- 1 google検索(Ethna_AppManager)
- 1 google検索(Ethna_AppManager DB)
- 1 google検索(Ethna_AppManager データベース)
- 1 google検索(Ethna getDB)
- 1 google検索(Ethna getDB)
- 1 google検索(Ethna AppManager)
- 1 google検索(Ethna Ethna_AppManager)
- 1 google検索($this->backend->getDB())
- 1 google検索($stmt->closeCursor())
- 1 google検索(ethna getDB)
- 1 google検索(Ethna AppManager DB接続)
- 1 google検索(ethna $db->db->prepare)
- 1 google検索(backend->getDB)
- 1 google検索(zend framework db接続)
- 1 google検索(md5passコマンド)
- 1 google検索(ethna getDB)
- 1 google検索(stmt backend)
- 1 google検索(pdo extends)
- 1 google検索(extends Ethna_AppManager コンストラクタ)
- 1 google検索(ethna sql execute)
- 1 google検索(ethna pdo bindparam)
- 1 google検索(ethna getdb)
- 1 google検索(ethna getDB('e'))
- 1 google検索(ethna backend getdb)
- 1 google検索(backend->getDB)
- 1 google検索(PHP PDO サンプル)
- 1 google検索(Ethna pdo)
- 1 google検索(Ethna AppManager サンプル)
- 1 google検索(Ethna DB リード)
- 1 google検索(Ethna::raiseNotice)
- 1 google検索(Appmanager CentOS)
- 1 google検索($this->backend->getDB())
- 1 google検索(php pdo extends)
- 1 google検索(php sqlite pdo サンプル)
- 1 google検索(xrea pdo)
- 1 google検索(php pdo サンプル)
- 1 google検索(PDO prepare SQL 調べる)
