DBアクセス関数について

だいたい新しい言語だとDBにアクセスするのにどの関数使ったら良いかよくわかんなかったり、取ってきたデータがどういう形式かよくわかんなくて躓くことがよくあると思います これはひとえにライブラリ作ってる奴らがクソなのが悪いです
PHPもご多分に漏れず(とはいってもだいぶ簡単なのですが)、方法が色々あって、理解の足りない人にはとても大変です
多分最短距離は、過去記事に書いてる

$sql = 'select id, name from hoge';
$rs = $db->query($sql);
$hoges = pg_fetch_all($rs);
$smarty->assign('hoges ', $hoges);

だとおもうのですが、コネクションも含めるとすげーめんどくさいですね
殆どの場合、ほしいのは結果の連想配列の配列であって、リソースIDなんていらんので、これはラッピングしてしまいましょう
うちではオレオレフレームワークに絡めてDBアクセスライブラリも自作しておりまして、こんなかんじになります

$sql = ' select id, name from hoge ';
$smarty->assign('hoges', DB::getdb('hogedb')->query_rows($sql));

connectionstringをini化して名前で呼び出せるようにしているのは大前提です
それなりの複雑なシステムではDBは2つ以上あると思いますが、複数のDBコネクションを同時に扱うとき、大体のシステムではDBクラスのインスタンスをぼこぼこ作って散らかす事が多いように思います
$db_hoge = DB('hoge');
$db_fuga = DB('fuga');
ださいですので、DBクラス内にDBインスタンスキャッシュリストを作っておくわけです
query_rows()はquery()とpg_fetch_all()をラップしています 空だとfalseが戻ります
関数を作るときは、異常系の正常系ならばfalseが戻るのが一番よいです
smartyの場合はfalseであれば無視してくれますし、通常のロジックであっても

if ($rows = DB::getdb('hogedb')->query_rows($sql)) {
  foreach ($rows as $row) {
    //なんかしょり
  }
}

のようにできます
ちなみにPHPでは空の配列もfalseとして評価されるので、SQLがおかしくてエラーでも、SQLは正しくて結果が0件でも、どちらでもロジックには影響がでません SQLがおかしいのは適当にあとでエラーログを見てちまちまデバッグしてね

ちなみに結果が一行であることが明白な場合はquery_row(), 1行1カラムというのが明白ならquery_value(), 1カラム複数行で1次元配列が欲しい場合にはquery_values()など作っておくと後加工がいらずとても便利でよいです

というようなライブラリをもうかれこれ5年くらい使ってるのですが、井の中の蛙なのか、これより簡単なDBアクセスライブラリに出会ったことがないので、もししぬほど簡単なのがあったら教えて下さい