mysql:9243
From: "KAWAI,Takanori" <"KAWAI,Takanori" <GCD00051@xxxxxxxxxx>>
Date: Wed, 21 Apr 2004 00:30:36 +0900
Subject: [mysql 09243] Re: MySQL+DBI/DBD+Apatchのログについて
川合孝典です。 ----- Original Message ----- From: "Atusi Taga" <call_function@xxxxxxxxxx> To: <ml@xxxxxxxxxx> Sent: Tuesday, April 20, 2004 11:37 PM Subject: [mysql 09241] MySQL+DBI/DBD+Apatchのログについて > はじめまして多賀@アルカディアと申します。 > > MySQL+DBI/DBD+Apatch+Perlで質問させて下さい。 ウーンとApacheですよね? > $sth = $db->prepare("SELECT * FROM hoge_table where year=$ARGV[1] ApacheでCGIとして実行させようとしているのではないでしょうか? そのときに$ARGV[1]の値はどのように設定されているのでしょうか? これが空になっている可能性が高いと思われます。 (中略) > DBD::mysql::st fetchrow_array failed: fetch() without execute() at > /Library/WebServer/CGI-Executables/nabunken_setumei/setumei.pl line > 38. > > このようなエラーメッセージがApatchのログに書き込まれます。 その前に DBD::mysql::st execute failed ... というメッセージも出力されていると思うのですが、いかがですか? > この現象を回避する方法をご存知でしたら教えて下さい。 とりあえず以下のようにすれば、エラーは抑えることができるでしょう。 #プレースホルダを使って、executeで指定 #これなら$ARGV[1]がundefでもとりあえずエラーにはならないはず ただし$ARGV[1]で何がしたいのか不明です。 CGIパラメータがとりたいのであれば、CGI.pmなどを利用したほうが いいでしょう。 #参考: CGI.pm http://member.nifty.ne.jp/hippo2000/perltips/Cgi.htm #yearの完全一致なのにorder byの項目というのも... またDBIの常識として (1)use strict(Perlの常識レベルですが)、プレースホルダを 使ったほうがよいでしょう。 (2)rowsをexecute直後に使うのは移植性を損なうもとになります この時点では行数が特定できないDBMSもあります(ex. Oracle) #fetchrow_arrayよりfetchrow_arrayrefのほうが好きっていうか効率的 #!/usr/bin/perl -w use strict; use DBI; my $db = DBI->connect('dbi:mysql:test', 'usr', 'pwd', {RaiseError => 1, AutoCommit => 1}) or die("ERROR:" . DBI->errstr()); my $sth = $db->prepare( "SELECT * FROM hoge_table where year=? order by year desc,month desc,mday desc"); $sth->execute($ARGV[1]); my $num_rows = $sth->rows; my @tmp=$sth->fetchrow_array; print join(',', @tmp), "\n"; 何を参考にこのスクリプトを書かれたのかわかりませんが、 ことDBIに関連してはuse strictが書いてないようなスクリプトは、 あまり信用しないほうがいいでしょう。 DBIのドキュメントに (The use strict; isn't required but is strongly recommended.) と入ってから4年ぐらい経つんですから。 =================================================== 川合 孝典 (Hippo2000) DBI日本語メーリングリスト管理人、Kansai.pm所属 kwitknr@xxxxxxxxxx GCD00051@xxxxxxxxxx http://member.nifty.ne.jp/hippo2000、http://www.hippo2000.info/ perldocの日本語情報ならperldocjp:翻訳してみませんか? http://perldocjp.sourceforge.jp/ ===================================================
9241 2004-04-20 23:37 ["Atusi Taga" <call_f] MySQL+DBI/DBD+Apatchのログについて -> 9243 2004-04-21 00:30 ┣["KAWAI,Takanori" <GC] 9260 2004-04-22 10:56 ┃┗[yoshi <yosihisa@xxxx] 9278 2004-04-23 01:23 ┃ ┗["KAWAI,Takanori" <GC] 9247 2004-04-21 09:41 ┗[Takasi Watanabe <off]