こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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++;
}

投稿日時 - 2005-08-18 11:04:19

QNo.1587579

すぐに回答ほしいです

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

$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();

こんなかんじでしょうか?

投稿日時 - 2005-08-18 12:24:43

補足

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

投稿日時 - 2005-08-18 15:15:04

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.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

投稿日時 - 2005-08-19 03:20:26

ANo.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の値が格納されている。
という具合にデータが格納されているはずなんですが・・動かないですか??

投稿日時 - 2005-08-18 20:01:11

補足

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

投稿日時 - 2005-08-18 20:11:03

ANo.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と同じようにデータが取得できるとおもいます。

投稿日時 - 2005-08-18 16:11:50

補足

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

投稿日時 - 2005-08-18 19:36:04

ANo.2

>これで本当に結果がPHPのように取れるでしょうか?

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

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

投稿日時 - 2005-08-18 15:41:41

補足

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

投稿日時 - 2005-08-18 19:09:28

あなたにオススメの質問