質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

644閲覧

PHP よくわかるPHPの教科書

kai1712

総合スコア1

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2022/05/23 02:07

現在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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

もしかして

php

1$memos=$db->prepare('SELECT *FROM memos ORDER BY id LIMIT ?.5');

php

1$memos=$db->prepare('SELECT * FROM memos ORDER BY id LIMIT ?, 5'); // .→,

投稿2022/05/23 02:09

編集2022/05/23 02:09
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kai1712

2022/05/23 02:17

ありがとうございます。しょうもない間違えでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問