PHPMDB2のgetRow

Twitter ツイート Hatena Bookmark ブックマーク

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<?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するべきかなーと。

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

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

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

1
2
3
<?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
Built with Hugo
テーマ StackJimmy によって設計されています。