アプリ版:「スタンプのみでお礼する」機能のリリースについて

perlのDBIモジュールを使って、mysqlのレコード件数を表示させてみると、すごい数が表示されました。ソースは以下の通りです。
use DBI;
$dbh=DBI->connect("DBI:mysql:データベース名:サーバ名", "ユーザ名", "パスワード") || die $DBI::errstr;
if(!$dbh){
print "エラーです。入力を確認してください。";
exit;
}else{
#接続成功

# SELECT文発行
$sth=$dbh->prepare("SELECT sei, mei, mail FROM table");
#実行
$sth->execute;
$num_rows = $sth->rows;
print "該当 $num_rows, 件\n";

# 開放
$sth->finish;
# AUTO COMMITがOFFの場合はCOMMITが必要
$dbh->commit;
# 切断
$dbh->disconnect;
}

実行すると該当 4294967294, 件 とブラウザに表示されました。僕はレンタルサーバを使っているわけですが、僕のデータベースにはレコードは3件しかないのです。これはレンタルサーバのデータベースすべての件数が表示されているのでしょうか?
なんだかSQLを実行するのが怖いので、考えられる原因を教えてください。よろしくお願いします。
プログラムを初めてまだ、数ヶ月しか経ってない初心者なので、みなさんの知恵を貸していただけると幸いです。

A 回答 (1件)

こんにちは。



まず、全然関係ないですが、SELECT文ではCOMMIT不要です。
さて本題ですが、この場合のrowsは何が返るかわかりません。
rowsでレコード数を取り出せるのは下記の場合のみです。
1.doメソッドで実行した場合(条件付き)
2.SELECT以外のSQL。
3.SELECT実行後、すべての行を取り出した後。

ところで、件数取得はCOUNT()じゃダメ?
(^^ゞ
    • good
    • 0
この回答へのお礼

こんにちはtaka451213さん。

ここ数日で、perlやDBを少し学習しました。
 その結果、SELECT等の問題については、理解でき、問題も解決しました。色々とありがとうございました。

またどうしてもわからないことがあったら、この場を使って聞きたいと思います。そのときはよろしくお願いします。

親切な対応ありがとうござました。

お礼日時:2004/12/04 20:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す