前提・実現したいこと
トップページにて、以下の機能を実装しようとしています。
1.PDOでSQLサーバーから商品データを取得
2.1ページ目には取得した項目の110を表示,2ページ目には1120...とページネーション機能を付け加える。
発生している問題・エラーメッセージ
PHPにて、bindValue()を用いて、SELECTでのデータ取得範囲をBETWEENで行っていますが、データが上手く取得できません。
該当のソースコード
php
1 2<?php 3 $page = 1; 4 try{ 5 $db = new PDO($dsn['db_info'],$dsn['user'],$dsn['password']); 6 echo "接続OK"; 7 } catch(PDOException $e){ 8 echo 'DB接続エラー!: ' . $e->getMessage(); 9 } 10 11 $stmt = $db->prepare("SELECT id, title FROM thread BETWEEN :start AND :last ORDER BY id DESC"); 12 13 //BETWEENの開始位置と終了位置を指定 14 $start = ($page - 1) * 10 + 1; 15 $last = $page * 10; 16 17 //紐づけを行い、実行 18 $stmt->bindValue(":start", $start); 19 $stmt->bindValue(":last", $last); 20 $stmt->execute(); 21 22 while($result = $stmt->fetch(PDO::FETCH_ASSOC)){ 23 $items[] = $result; 24 } 25 26 var_dump($items); //実行結果:NULL 27 28 ?> 29
試したこと
以下のソースコードでは、正しく情報を取得することができました。
php
1 2<?php 3 $page = 1; 4 try{ 5 $db = new PDO($dsn['db_info'],$dsn['user'],$dsn['password']); 6 echo "接続OK"; 7 } catch(PDOException $e){ 8 echo 'DB接続エラー!: ' . $e->getMessage(); 9 } 10 11 $stmt = $db->prepare("SELECT id, title FROM thread ORDER BY id DESC"); 12 $stmt->execute(); 13 14 while($result = $stmt->fetch(PDO::FETCH_ASSOC)){ 15 $items[] = $result; 16 } 17 18 var_dump($items); //データベースの値が正しく出力されました。 19 20 ?> 21
調べたのですが、情報がなくわかることがあれば教えていただきたいです。
よろしくお願い致します。
補足情報(FW/ツールのバージョンなど)
PHP7.4.2
MAMP5.7
実行ブラウザ
Chrome
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/03 06:08
2020/07/03 09:50
2020/07/03 09:52
2020/07/03 09:53
2020/07/03 10:01
2020/07/03 10:05
2020/07/03 10:35