dポイントプレゼントキャンペーン実施中!

データベースから取得したデータを配列に格納することができません。
唯一、以下の方法で格納できたのですが、この場合データベースの項目の数が、あらかじめ分かっている場合にしか使用できません。googleで検索して出てくるサンプルは全てループ内でprintしているので参考になりませんでした。
やりたいことは単純で、データベースにクエリーを発行した結果の複数レコードをそのまま配列に格納することです。perlに詳しい方がおられましたらよろしくお願いします。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
■データベース内のデータ
id=1,subid=1,data1=aaa
id=1,subid=2,data1=bbb
id=1,subid=3,data1=ccc

■期待する結果
@result = ("1","1","aaa",
"1","2","bbb",
"1","3","ccc",
)
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

■実際のソース
**********************************************************
use DBI;
#//■DB接続
$db = DBI->connect("DBI:mysql:$DbName:$DbHost", $DbUser, $DbPass);
$sth = $db->prepare($sql);
$sth->execute;
$cnt = $sth->rows;

for($i=0; $i<$cnt; $i++){
@work = $sth->fetchrow_array;
@result[$i] = ([$work[0],$work[1],$work[2],]);
}

#//■CLOSE
$sth->finish;
$db->disconnect;

for($i=0; $i<$cnt; $i++){
print "<p>".$result[$i][0]."/".$result[$i][1]."/".$result[$i][2]."</p>\n";
}
**********************************************************

A 回答 (2件)

検索して出てきたソースを利用してprintしてる変数を配列にいれるんじゃダメでしょうか?



$cnt= $sth->rows;
for ($i=0; $i<$cnt; $i++) {
@a = $sth->fetchrow_array;
push(@result,@a);
}
    • good
    • 1
この回答へのお礼

このすぐ上の記事で同じ事をしたのですが、ここは一度書くと24時間は消せないみたいなので無駄に手間を取らせてしまいました。ありがとうございました。

お礼日時:2007/08/17 16:43

@result[$i] = ([$work[0],$work[1],$work[2],]);



@result[$i] = @work;

print "<p>".$result[$i][0]."/".$result[$i][1]."/".$result[$i][2]."</p>\n";

print "<p>".join('/',@{$result[$i]})."</p>\n";

これでどうでしょうか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
この質問はすぐ上の質問に内容が変わりました。24時間以内だと消せないようなのでお手間を取らせてしまいましてすいませんでした。

基本的にデータ構造が以下のようになっていて、自由に配列の要素にアクセスできたほうが望ましいかもしれません。

@result = (["1","1","aaa"],
["1","2","bbb"],
["1","3","ccc"],
)

お礼日時:2007/08/17 17:00

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