現在PHPの勉強のため 「よくわかるPHPの教科書」という本で
メモの管理システムを作成しているのですが
メモの一覧を表示した時にページを制限するコードを以下のようにするとエラーが出てしまいます。
execute()関数の使い方が間違っているのでしょうか。
本通りにコーディングしていますがエラーが出るので解決法を教えていただきたいです。
php
1<?php require('dbconnect.php'); ?> 2<!DOCTYPE html> 3<html lang="ja"> 4 <head> 5 <meta charset="utf-8"> 6 <meta name="viewport" content="width=device-width ,initial-scale=1.0"> 7 <title>practice</title> 8 </head> 9 <body> 10 <h2>メモ一覧</h2> 11 <?php 12 if(isset($_REQUEST['page']) && is_numeric($_REQUEST['page'])){ 13 $page=$_REQUEST['page']; 14 } else { 15 $page=1; 16 } 17 $start = 5 * ($page - 1); 18 $memos=$db->prepare('SELECT *FROM memos ORDER BY id LIMIT ?.5'); 19 $memos->bindParam(1, $start, PDO::PARAM_INT); 20 $memos->execute(); 21 ?> 22 <article> 23 <?php while ($memo = $memos->fetch()): ?> 24 <p><a href="memo.php?id=<?php print($memo['id']); ?>"> <?php print(mb_substr($memo['memo'],0,50)); ?></a></p> 25 <time><?php print($memo['created_at']); ?></time> 26 <hr> 27 <?php endwhile ; ?> 28 <?php if ($page >= 2): ?> 29 <a href="index.php?page=<?php print($page-1); ?> "><?php print($page-1); ?>ページ目へ</a> 30 <?php endif; ?> 31 | 32 <?php 33 $counts = $db->query('SELECT COUNT(*) as cnt FROM memos'); 34 $count = $counts -> fetch(); 35 $max_page = floor($count['cnt'] /5)+1; 36 if($page < $max_page): 37 ?> 38 <a href="index.php?page=<?php print($page+1); ?> "><?php print($page+1); ?>ページ目へ</a> 39 <?php endif; ?> 40 </article> 41 </body> 42</html>
エラー
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.5' at line 1 in /Applications/MAMP/htdocs/memo/index.php:20 Stack trace: #0 /Applications/MAMP/htdocs/memo/index.php(20): PDOStatement->execute() #1 {main} thrown in /Applications/MAMP/htdocs/memo/index.php on line 20
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/05/23 02:17