前提・実現したいこと
mysqlの接続がしたい
ここに質問の内容を詳しく書いてください。
phpとmysqlを連動させた掲示板サイトの作成をしています。(開発環境はxamppです)
しかしmysqlの接続に失敗してデータの連動がうまく行かずエラーメッセージが出てしまいます。
考えられる理由を教えてください。
■■以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
Fatal error: Uncaught Error: Call to a member function bindParam() on bool in
エラーメッセージ
該当のソースコード
◆データベースの作成(コマンドラインを使用)
CREATE DATABASE data_base;
USE data_base;
CREATE TABLE bbs(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20) NOT NULL,
title VARCHAR(50),
body TEXT NOT NULL,
data DATETIME NOT NULL,
pass CHAR(4) NOT NULL
)DEFAULT CHARACTER SET=utf8;
GRANT ALL ON data_base.* to 'user'@'localhost'
IDENTIFIED BY 'aaasss';
FLUSH PRIVILEGES;
◆bbs.php(テキストエディタで作成したページ)
<!DOCTYPE html> <?php $num = 10; //データベースの接続 $dsn = 'mysql:host=localhost; dbname=data_base; charset=utf8'; $user = 'user'; $password = 'aaasss'; //ページ数が指定されている時 $page = 0; if (isset($_GET['page']) && $_GET['page'] > 0) { $page = intval($_GET['page']) -1; } try { $db = new PDO($dsn, $user, $password); $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); //プリペアドステートメントの作成 $stmt = $db->prepare(" SELECT* FROM bbs ORDER BY date ASC LIMIT :page, :num" ); //パラメータの割り当て $page = $page * $num; $stmt->bindParam(':page', $page, PDO::PARAM_INT); $stmt->bindParam(':num', $num, PDO::PARAM_INT); //クエリの実行 $stmt ->execute(); } catch(PDOEXception $e){ echo "エラー" . $e->getMessage(); } ?> <html lang="ja"> <head> <meta charset="UTF-8"> <title>掲示板</title> </head> <body> <h1>掲示板</h1> <form action="write.php" method="post"> <p>名前: <input type="text" name="name"></p> <p>タイトル: <input type="text" name="title"></p> <textarea name="body"></textarea> <p>削除用パスワード(4桁): <input type="text" name="pass"></p> <input type="submit" value="書き込む"> </form> <hr> <?php while ($row = $stmt->fetch()): $title = $row['title'] ? $row['title'] : '(無題)'; ?> <p>名前:<?php echo $row['name'] ?></p> <p>タイトル:<?php echo $title ?></p> <p><?php echo n12br($row['body'],false) ?></p> <p><?php echo $row['data'] ?></p> <?php endwhile;</body> </html>//ページ数の表示 try { $stmt = $db->prepare("SELECT COUNT(*) FROM bbs"); //クエリの実行 $stmt->execute(); } catch (PDOException $e){ echo "エラー" . $e->getMessage(); } //コメントの件数を取得 $comments = $stmt->fetchColumn(); //ページ数を計算 $max_page = ceil($comments / $num); echo '<p>'; for ($i = 1; $i <= $max_page; $i++) { echo '<a href="bbs.php?page=' . $i .'">' . $i . '</a> '; } echo '</p>'; ?>
php mysql html
試したこと
上記
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/12 15:23