匿名質問者

perl からMYSQLのクエリを以下のように送りました。


my $sth = $db->prepare("SELECT DATE_FORMAT(time, '%H:%i:%s') = '05:34:00' from table");

while (my @rec = $sth->fetchrow_array) {

#何か処理する

}

しかし、
while (my @rec = $sth->fetchrow_array) {
でエラー(DBD::mysql::st fetchrow_array failed: fetch() without execute() )が起こります。

%H:%i:%sの部分が原因ではないかと思っていますが、%H:%i:%sを\%H:\%i:\%sとしたりと試してみたのですが、うまく行きませんでした。

どのようにすればよいでしょうか?

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/02/15 16:06:31

ベストアンサー

匿名回答2号 No.2

エラー文の通りです「DBD::mysql::st fetchrow_array failed: fetch() without execute() 」→ fetchrow_array が失敗しました。execute()を呼ばずにfetch()を試みました

my $sth = $dbh->prepare(...);
$sth->execute( @bind_params );
while ( .... $sth->fetchrow_array ) {
....
}

のようにする必要があります。
DBIのPODを読みましょう! http://perldoc.jp/docs/modules/DBI-1.612/DBI.pod

匿名質問者

出来ました。ありがとうございます。

2013/02/15 16:06:17

その他の回答1件)

匿名回答1号 No.1

DATE_FORMAT(time, '%H:%i:%s') = '05:34:00' は Where句です。

select * From table
where
DATE_FORMAT(time, '%H:%i:%s') = '05:34:00'

匿名質問者

ありがとうございます。

2013/02/15 16:06:24
匿名回答2号 No.2

ここでベストアンサー

エラー文の通りです「DBD::mysql::st fetchrow_array failed: fetch() without execute() 」→ fetchrow_array が失敗しました。execute()を呼ばずにfetch()を試みました

my $sth = $dbh->prepare(...);
$sth->execute( @bind_params );
while ( .... $sth->fetchrow_array ) {
....
}

のようにする必要があります。
DBIのPODを読みましょう! http://perldoc.jp/docs/modules/DBI-1.612/DBI.pod

匿名質問者

出来ました。ありがとうございます。

2013/02/15 16:06:17

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません