• ベストアンサー

phpのmysql_fetch_arrayに該当する関数はありますか?

以下のようなphp、MySQLのセレクト文は perlだとどのようになるのでしょうか? $sql="SELECT abc,xyz FROM table "; $res=mysql_query($sql,$con) or die("データベースを検索できませんでした。 mysql_error(); "); $i=0; while($row=mysql_fetch_array($res)) { $abc[$i]=$row['abc']; $xyz[$i]=$row['xyz']; $i++; }

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

  • ベストアンサー
  • omni2
  • ベストアンサー率53% (33/62)
回答No.1

$dbh = DBI->connect($dns,$username,$passowrd); $sth = $dbh->prepare(SELECT abc,xyz FROM table); $sth->execute(); ##↓これ?? while(@ary = $sth->fetchrow_array()){ #・・・・・ } $sth->finish(); $dbh->disconnect(); こんなかんじでしょうか?

takeya4649
質問者

補足

これで本当に結果がPHPのように取れるでしょうか? よろしくお願いします。

その他の回答 (4)

  • zebedeer
  • ベストアンサー率66% (80/121)
回答No.5

以下のコードを実行した場合の「NUM_OF_FIELDS」や 「NAME」の値はどうなっていますか? $sth = $dbh->prepare("SELECT * FROM table") or die; use Data::Dumper; print Dumper $sth; あとは、以下の場合とか。 use Data::Dumper; print Dumper $dbh->selectall_arrayref("SELECT * FROM table") or die; #とりあえず、実際のコードとその結果を載せたほうがいい感じ。 #http://nikki.hio.jp/?date=20040325

参考URL:
http://www.rfs.jp/sitebuilder/perl/dbi/06.html#%83X%83e%81[%83g%83%81%83%93%83g%83n%83%93%83h%83%8B%91%AE%90%AB
  • omni2
  • ベストアンサー率53% (33/62)
回答No.4

あれ動作しませんか??おっかしいですね?? ちなみに動作確認はしておりません。 >仮に5個のカラムがあれば、配列5は2行目の一番最初のカラムの値だということですよね 5個のカラムというのは、abc,xyzのことをおっしゃっていらっしゃるんでしょうか?abc,xyz,aaa,bbb,cccみたいなかんじで? 配列5というのはエーっとなんでしょうか? たとえば、abc,xyz,aaa,bbb,cccの値を取り出す場合は、 $sth = $dbh->prepare("SELECT abc,xyz,aaa,bbb,ccc FROM table");としておいて、 while(@ary = $sth->fetchrow_array()){ $abc[$i] = $ary[0]; $xyz[$i] = $ary[1]; $aaa[$i] = $ary[2]; $bbb[$i] = $ary[3]; $ccc[$i] = $ary[4]; $i++; } という具合に、$ary[0]の値は、abcのデータが格納されている、$ary[1]の値は、xyzの値が格納されている $ary[2]の値は、aaaの値が格納されている。 という具合にデータが格納されているはずなんですが・・動かないですか??

takeya4649
質問者

補足

1行しか取れない感じです。 現在22行あります。 SELECT カラム名 FROM テーブル名 WHERE aaa='$aaa';

  • omni2
  • ベストアンサー率53% (33/62)
回答No.3

すみません。まちがってました。 $sth = $dbh->prepare(SELECT abc,xyz FROM table); ↓ $sth = $dbh->prepare("SELECT abc,xyz FROM table"); ""がいります。 while(@ary = $sth->fetchrow_array()){ $abc[$i] = $ary[0]; $xyz[$i] = $ary[1]; $i++; } こうすれば、PHPと同じようにデータが取得できるとおもいます。

takeya4649
質問者

補足

このご回答はご自分で確かめた結果でしょうか? こちらの環境では出来ませんでした。 仮に5個のカラムがあれば、配列5は2行目の一番最初のカラムの値だということですよね?

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

>これで本当に結果がPHPのように取れるでしょうか? 取れます。 疑うのでしたら、ご自分でテストしてみてはいかがでしょうか。 ちなみに、DBIを使用しているので、Perl自体がデータベースの接続関数を持っているのではありません。 DBIがPerlとMysqlとの通訳をしている形ですね。

参考URL:
http://www.atmarkit.co.jp/flinux/rensai/mysql04/mysql04a.html
takeya4649
質問者

補足

22行のデータが1行分しか取れません。。。 SELECT文はphpでは22行取れているので間違いはありません。 よろしくお願いします。