• ベストアンサー

データベースから取得したデータを配列に格納

データベースから取得したデータを配列に格納することができません。 唯一、以下の方法で格納できたのですが、この場合データベースの項目の数が、あらかじめ分かっている場合にしか使用できません。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"; } **********************************************************

質問者が選んだベストアンサー

  • ベストアンサー
  • an-gooo
  • ベストアンサー率50% (6/12)
回答No.2

検索して出てきたソースを利用してprintしてる変数を配列にいれるんじゃダメでしょうか? $cnt= $sth->rows; for ($i=0; $i<$cnt; $i++) { @a = $sth->fetchrow_array; push(@result,@a); }

mugakusya
質問者

お礼

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

その他の回答 (1)

  • 2NN
  • ベストアンサー率40% (143/353)
回答No.1

@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"; これでどうでしょうか。

mugakusya
質問者

お礼

回答ありがとうございます。 この質問はすぐ上の質問に内容が変わりました。24時間以内だと消せないようなのでお手間を取らせてしまいましてすいませんでした。 基本的にデータ構造が以下のようになっていて、自由に配列の要素にアクセスできたほうが望ましいかもしれません。 @result = (["1","1","aaa"], ["1","2","bbb"], ["1","3","ccc"], )

関連するQ&A