###前提・実現したいこと
PHPとMySQLを用いて、ページネーションの実装をしています。
ページネーション(ページ切り替え)の実装方法いろいろ - Qiitaを参考にしてコードを書いてみましたが、LIMIT句でエラーが発生します。
###発生している問題・エラーメッセージ
Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''0', 20' at line 1 in /***/index.php:16
###該当のソースコード
PHP
1$page = $_GET['page'] - 1; 2if ($page < 0) $page = 0; 3 4$sql = "SELECT * FROM table ORDER BY 'id' ASC LIMIT :offset, 20"; 5$stmt = $pdo->prepare($sql); 6$stmt->bindValue(':offset', $page * 20); 7$stmt->execute(); 8$data = $stmt->fetchAll();
###試したこと
プレースホルダを用いずに、
PHP
1$sql = "SELECT * FROM table ORDER BY 'id' ASC LIMIT ".($page*20).", 20";
とした場合には正常に動作します。
なぜプレースホルダを用いたSQL文では、構文エラーが出るのでしょうか?
###補足情報(言語/FW/ツール等のバージョンなど)
PHP7.0.18
MySQL5.7
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/11/06 04:40
2017/11/06 04:50
2017/11/06 04:53 編集
退会済みユーザー
2017/11/06 04:58
2017/11/06 05:04
2017/11/06 05:30