PHPMDB2のgetRow
ひさしぶりに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