- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQLite3(PDO)でクエリー件数を取得したい)
SQLite3(PDO)でクエリー件数を取得する方法
このQ&Aのポイント
- SQLite3を使用してPHPでクエリー件数を取得する方法を教えてください。
- SELECT文で条件に合う行数を抽出し、スマートに一度のアクセスで件数を取得する方法を知りたいです。
- MySQLやPostgreSQLではなく、SQLite3でのクエリー件数の取得方法がわかりません。お手数ですが教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ご質問のコードは1行目の第0番目のデータを表示させていますが、select命令の取得フィールドを2つとも指定するようにできます。 そして、fetch を fetch_assocに変えて、count(*)に別名kosuを与えて、連想配列で$num->idと呼び出すようにできます。 ただし、このようにしてデータ件数分だけ繰り返したとして、count()関数をその度に繰り返すでしょうから時間的ロスは出るので、別々にするのが効率的と思われます。 また、PDOを活用するとしたら、基本的なSQLの操作方法は共通ですから、SQLの文法と繰り返し取得とフィールドの分割が分かれば、SQLの違いに関わらす自由に操作できます。 $pdo = new PDO(sqlite:test.db); $query = $pdo->prepare('SELECT id, count(*) AS kosu FROM testTable WHERE id > 0 AND id < 10'); $query->execute(); $num = $query->fetch_assoc(PDO::FETCH_NUM); // id,kazuを指定して echo $num->id; echo $num->kazu;
お礼
ありがとうございます。 示して頂いたコードではどうもエラーが出るのでいろいろ調べておりました。 そこで以下のようにしたら取得できるような感じでした。 $pdo = new PDO(sqlite:test.db); $query = $pdo->prepare('SELECT id, count(*) AS kosu FROM testTable WHERE id > 0 AND id < 5'); $query->execute(); $queryArray = $query->fetchALL(PDO::FETCH_ASSOC); print_r($queryArray); 出力結果 Array ( [0] => Array ( [id] => 1 [id] => 2 [id] => 3 [id] => 4 [kazu] => 4 ) ) 他の方法として、取得した配列をsizeofでも確認できました。 アドバイス頂いて方向性がわかりましたので助かりました。