- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Perlからのアクセス。カウントが取れない。)
Perlでのデータベースアクセス方法に関する質問
このQ&Aのポイント
- Perlでのデータベースアクセス方法について、レコード数の取得方法について質問です。
- MySQLのバージョンによって、データベースのレコード数の取得方法が異なることに気づきました。
- 具体的には、MySQL5.0系では「$dbh->selectrow_array」を使用してレコード数を取得できましたが、MySQL5.1系では「($cnt) = $dbh->selectrow_array」のような書き方をしなければエラーが発生します。この違いについて、仕様の変更があったのか、または上の書き方が間違っていたのか知りたいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
以下のような記述が見つかりました。 If called in a scalar context for a statement handle that has more than one column, it is undefined whether the driver will return the value of the first column or the last. So don't do that. Also, in a scalar context, an "undef" is returned if there are no more rows or if an error occurred. That "undef" can't be distinguished from an "undef" returned because the first field value was NULL. For these reasons you should exercise some caution if you use "selectrow_array" in a scalar context, or just don't do that. 要約すると、配列用だからスカラに入れるのは要注意!or 入れちゃダメ。 スカラに入れるならselectrow_arrayrefで、 $ary_ref = $dbh->selectrow_arrayref($statement); ってしてね。 という事らしいです。
お礼
ありがとうございます。 やはり今までの書き方が間違っていたんですね。 かなり色々な所で使ってしまっています。 大変助かります。ありがとうございました。 参考URLも何やらいろいろと載っていて、いい感じです。