• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQLite3(PDO)でクエリー件数を取得したい)

SQLite3(PDO)でクエリー件数を取得する方法

このQ&Aのポイント
  • SQLite3を使用してPHPでクエリー件数を取得する方法を教えてください。
  • SELECT文で条件に合う行数を抽出し、スマートに一度のアクセスで件数を取得する方法を知りたいです。
  • MySQLやPostgreSQLではなく、SQLite3でのクエリー件数の取得方法がわかりません。お手数ですが教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • seastar3
  • ベストアンサー率69% (99/142)
回答No.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;

suffre
質問者

お礼

ありがとうございます。 示して頂いたコードではどうもエラーが出るのでいろいろ調べておりました。 そこで以下のようにしたら取得できるような感じでした。 $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でも確認できました。 アドバイス頂いて方向性がわかりましたので助かりました。

関連するQ&A