海外旅行から帰ってきたら、まず何を食べる?

初心者の質問ですみません。

フレームワークをずうっと使って来たのですが、フレームワークを使わずに検索をしようとしたところ、全く思うようにいかず困っています。

SELECT * FROM table

のような単純なSQL文なのですが、PEARを使って
$sql = "SELECT * FROM table";
$result = $conn->query($sql);

としvar_dumpしてみると、期待していたSQLのデータが表示されません。
フレームワークを使っていると、この時点でどのフレームワークでもきれいに連想配列で表示できていました。
その辺が、フレームワークのフレームワークたるゆえんなのでしょうか.....

ただ、結果は取得できているようで、
$count = $result->numRows();
としてやると正しい件数が表示されますし、カラム名を指定して
while($rs = $result->fetchRow(DB_FETCHMODE_ASSOC)){
echo $rs['column_name'];
}
としてやるとカラムの値を表示します。

やりたいこととしては、検索結果を連想配列で取得し、foreachで行ごとに処理を行うことで、whileで$rs['column_name']を取得できることから、最悪でも力技で行ごとにカラム情報を全て取得して配列を作ってやることはできるとは思うのですが、もっと良い方法が無いはずがないと思います。

教えていただけますでしょうか。
よろしくお願いします。

A 回答 (5件)

> やっぱりこのやり方ですかね。


> いちいちwhileで回してやらないとならないんですね。

どんなフレームワークを利用されてたのかは分かりませんが、結局こんな感じの事をやった結果を返してくれてるだけだと思いますよ。
関数化してしまえばSQL書くたびに「いちいち」おなじ処理を書く必要もないので、特に気にすることも無いとは思いますが・・・

私の場合は自分が中心になって開発していく場合は、PEARのMDB2をベースに汎用クラスを作ってあるのでそれをいつも使っています。
$db = new DBCLASS();
$array = $db->select($sql, $param);

みたいな感じです。
SELECT以外にもDB周りの処理を諸々作ってますが・・・

一回自分で作っておけば何かと便利だと思いますよ。
    • good
    • 0
この回答へのお礼

PEARのMDB2ですね。
勉強してみます。
ありがとうございます。

お礼日時:2012/01/26 08:29

query→queryAll


とすればいいだけですね。

ライブラリのリファレンスに書かれている事です。
    • good
    • 0
この回答へのお礼

ありがとうございます。
勉強してみます。

お礼日時:2012/01/26 08:30

すみません


いろいろ間違えました

function aaa($result) {
$arr = array();
while($rs = $result->fetchRow(DB_FETCHMODE_ASSOC)){
$arr[] = $rs;
}

return $arr;
}
    • good
    • 0
この回答へのお礼

ありがとうございます。

やっぱりこのやり方ですかね。
いちいちwhileで回してやらないとならないんですね。
勉強不足で....

お礼日時:2012/01/22 17:21

そこまで出来てるんであれば・・・


$resultをパラメータとして投げて連想配列にして返す汎用的な関数をひとつ作ってやればよいのでは?

function aaa() {
$arr = array();
while($rs = $result->fetchRow(DB_FETCHMODE_ASSOC)){
$arr[] = $rs;
}

return $rs;
}

みたいな感じで。
    • good
    • 0

PEAR DB の使い方は すっかり忘れちゃいましたが、PHPネイティブのMySQL用の mysql_fetch_assoc みたいの ないもんでしたっけ?


これでも while とかで ぶん回すのは一緒ですけど。

この回答への補足

mysql_fetch_assocは使えると思うのですが、mysql以外も想定しているのでmysqlに限定しない方法を考えています。

補足日時:2012/01/22 17:05
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報