![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
こんばんは、皆さん。
MySQLをPerlから使いたいのですが、
以下のようにやっても、$flagに"OK"が入りませんでした。
つまり、whileは一度もループしないで抜けてしまっているようです。
-------------------------------------------------
use DBI;
…
sub dbtest{
$dbh = DBI->connect("dbi:mysql:hogeDB:localhost","user","pass");
$sql = "select hoge,fuge from t_name where key='value'";
$sth = $dbh->prepare($sql);
$sth->execute;
while( ($hoge, $fuge) = $sth->fetchrow_array ){
$flag = "OK";
}
$sth->finish;
$dbh->disconnect;
}
-------------------------------------------------
※実際はユーザ名などは変数にしています。
バージョンは現在、
Perl:v5.8.5
MySQL:5.1.6-alpha
となっているようです。
それとちょっと別件ですが、
use autouseの書式は以下でよいのでしょうか?
「use autouse DBI;」
しかし、これだけだとDBIが読み込めてないエラーになるようです。
ご教示よろしくお願いします。
No.1ベストアンサー
- 回答日時:
> $flagに"OK"が入りませんでした。
入らない原因として考えられるのは
・そのSELECTの結果が空(つまり結果がゼロ件)→だからwhile内が実行されない
・SQL文の文法ミスなどでprepareまたはexecuteが失敗
・そもそもconnectでのデータベースへの接続に失敗している
があります。
どこか失敗していないか確認してみては?
> use autouseの書式は以下でよいのでしょうか?
autouseはモジュールの遅延ロードを行うためのもののようですが、DBIを遅延ロードさせる必要があるのでしょうか?
普通に
use DBI;
でよいと思いますが遅延させたい特別な理由でもあるのでしょうか?
http://slashdot.jp/~nekoie02/journal/
↑を見るとautouse使用時の注意点が2点ほど書かれています。
読んでみてください。
SQLで持って来れていないようですね。
でも、PerlからでなくコマンドラインからMySQLに接続して、
同じSQL文を実行しても、正常に持ってきていました。
どこかに間違いがあるはずなので、探してみます。
また、遅延ロードというか動的なロードという意味で理解しています。
CGIの動作が重いので、DBにアクセスしないうちは、ロードしないほうが
動作が軽快になると思ったので、指定してみたかっただけです。
回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP 【PHP/MySQL】コード上で生成したクエリを基に集計クエリを作りたい 1 2022/07/28 15:06
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- MySQL 何にかが違うから エラーなんでしょうね! 2 2022/09/18 05:28
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
LCD ディスプレイを Raspberry ...
-
PerlでHashのキーを制限したい
-
例外処理のフローチャートの記...
-
'Range'メソッドは失敗しました
-
Excel VBAでリンク切れをチェッ...
-
標準モジュールを削除したい。(...
-
グラフのX,Y座標を取得したい
-
Cからシェルを起動し返り値をハ...
-
【vba】フォームに書いてあ...
-
VBAで別モジュールへの変数の受...
-
Excel VBAで、ユーザーフォーム...
-
VBA This Workbookモジュール...
-
VBでグローバル変数を宣言するには
-
教えて下さい。
-
ベースモジュールって?
-
VBAProjectのモジュ...
-
acwzlibとは?
-
モジュールとクラスの違いって...
-
ユーザー定義関数に#NAME?が返...
-
モジュールとは何ですか
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
LCD ディスプレイを Raspberry ...
-
laravel 本番環境でメールが送...
-
Perlで画像のサイズ取得する方法
-
CGI::Carpを使っているのにInte...
-
MySQLとの接続でfetchrow_array...
-
(Perl CPAN) DBDがはいらない
-
perlからDBIを使用したpostgres...
-
failed: Can't connect to loca...
-
エラーでハマっている為、use A...
-
htmlフォームから受け取ったフ...
-
フォームメール@PerlとActiveP...
-
警告を消したい
-
Chart::Gnuplotの使い方
-
"use CGI::Session"でエラーが...
-
Unicode::Japanese を継承できない
-
例外処理のフローチャートの記...
-
Excel VBAでリンク切れをチェッ...
-
エクセルVBAでシートモジュール...
-
「デバイスは PRN を初期化でき...
-
VBAで別モジュールへの変数の受...
おすすめ情報