- ベストアンサー
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++; }
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
$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(); こんなかんじでしょうか?
その他の回答 (4)
- zebedeer
- ベストアンサー率66% (80/121)
以下のコードを実行した場合の「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
- omni2
- ベストアンサー率53% (33/62)
あれ動作しませんか??おっかしいですね?? ちなみに動作確認はしておりません。 >仮に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の値が格納されている。 という具合にデータが格納されているはずなんですが・・動かないですか??
補足
1行しか取れない感じです。 現在22行あります。 SELECT カラム名 FROM テーブル名 WHERE aaa='$aaa';
- omni2
- ベストアンサー率53% (33/62)
すみません。まちがってました。 $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と同じようにデータが取得できるとおもいます。
補足
このご回答はご自分で確かめた結果でしょうか? こちらの環境では出来ませんでした。 仮に5個のカラムがあれば、配列5は2行目の一番最初のカラムの値だということですよね?
- moon_night
- ベストアンサー率32% (598/1831)
>これで本当に結果がPHPのように取れるでしょうか? 取れます。 疑うのでしたら、ご自分でテストしてみてはいかがでしょうか。 ちなみに、DBIを使用しているので、Perl自体がデータベースの接続関数を持っているのではありません。 DBIがPerlとMysqlとの通訳をしている形ですね。
補足
22行のデータが1行分しか取れません。。。 SELECT文はphpでは22行取れているので間違いはありません。 よろしくお願いします。
補足
これで本当に結果がPHPのように取れるでしょうか? よろしくお願いします。