PHPMDB2のgetRow

May 13, 2009,
tags: getrow mdb2 php


このエントリーをはてなブックマークに追加

ひさしぶりにMDB2をつかって書いていたのですが、PEAR::DBと同じ仕様かと思ってプリペアステートメント使ってみたらエラーがでた。。

<?php
$db = MDB2::connect($dsn);
$db->loadModule('Extended', null, false);

$sql = "SELECT * FROM hoge WHERE id = ?";
$data = $db->extended->getRow($sql,array(1));
if (PEAR::isError($data)) {
   die($data->getMessage($data));
}
?>

こんな感じに書いたら間違ってました。。
どうやら、MDB2の場合3番目の引数にidの値を入れてあげないといけないみたいです。

ちなみに、 queryRow()って同じようなものもあるわけで、loadModule使わなくていいから、いいなーとか思ったけど、どうやらプリペアステートメントが使えないっす。
素直にloadModuleでExtended使ってgetRowするべきかなーと。

で、正解てきなソースコードは

getRow($sql,null,array(1));

ちなみに、Fetchのモード選びたいときは

<?php
$data = $db->extended->getRow($sql,null,array(1),null,MDB2_FETCHMODE_ASSOC);
?>

こんな感じに指定してあげれば選べるわけです。

フェッチモードは、3つあるっす。
MDB2_FETCHMODE_ORDERED
MDB2_FETCHMODE_ASSOC
MDB2_FETCHMODE_OBJECT

参考ページ

http://pear.php.net/package/MDB2/docs/latest/MDB2/MDB2_Extended.html

http://pear.plus-server.net/package.database.mdb2.intro-fetch.html

comments powered by Disqus