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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

Q&A

解決済

1回答

2188閲覧

簡易掲示板設置について

torinoto7

総合スコア19

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

0グッド

0クリップ

投稿2018/10/15 21:21

前提・実現したいこと

簡易掲示板をsqlで作成しています。DBを作成し掲示板に対応するテーブルを2つ作成しました。動作はしているのですが、二つ目の掲示板のみ下記エラーとなっています。

イメージ説明

イメージ説明

発生している問題・エラーメッセージ

Array ([0] => 00000[1] =>[2] => )

該当のソースコード

(fot.html)

PHP

1<?php 2 // 1ページに表示されるコメントの数 3 $num = 3; 4 5 //データベースに接続 6 $dsn = 'mysql:host=localhost;dbname=db11;charset=utf8'; 7 $user = 'db11user'; 8 $password = '1111'; //DBパスワード 9 10 //ページ数が指定されているとき 11 $page = 0; 12 if (isset($_GET['page']) && $_GET['page'] > 0) { 13 $page = intval($_GET['page']) -1; 14 } 15 16try { 17 $db = new PDO($dsn, $user, $password); 18 $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 19 //プリペアドステートメントを作成 20 $stmt = $db->prepare( 21 "SELECT * FROM bbs ORDER BY date DESC LIMIT 22 :page, :num" 23 ); 24 //パラメータを割り当て 25 $page = $page * $num; 26 $stmt->bindParam(':page', $page, PDO::PARAM_INT); 27 $stmt->bindParam(':num', $num, PDO::PARAM_INT); 28 //クエリの実行 29 $stmt->execute(); 30} catch(PDOException $e){ 31 echo "エラー:" . $e->getMessage(). "\n" . $e->getTraceAsString(); 32} 33 34?> 35 36<!doctype html> 37<html> 38<head> 39<meta charset="utf-8"> 40<title>title</title> 41</head> 42<div id="nav-drawer"><!-- ハンバーガー --> 43<input id="nav-input" type="checkbox" class="nav-unshown"> 44 <label id="nav-open" for="nav-input"> 45 <img src="img/a.jpg" class="fot"> 46 </label><span></span> 47 <label class="nav-unshown" id="nav-close" for="nav-input"></label> 48 <div id="nav-content"> 49 <div align="center"> 50 <img src="img/a.jpg" width="550" height="400"> 51<?php 52 while ($row = $stmt->fetch()): 53 $title = $row['title'] ? $row['title'] : '(無題)'; 54?> 55 <p>名前:<?php echo $row['name'] ?></p> 56 <p>タイトル:<?php echo $title ?></p> 57 <p><?php echo nl2br($row['body'], false) ?></p> 58 <p><?php echo $row['date'] ?></p> 59<?php 60 endwhile; 61 62 //ページ数の表示 63 try { 64 //プリペアドステートメント作成 65 $stmt = $db->prepare("SELECT COUNT(*) FROM bbs"); 66 //クエリ 67 $stmt->execute(); 68 } catch (PDOException $e){ 69 echo "エラー:" . $e->getMessage(). "\n" . $e->getTraceAsString(); 70 } 71 72 //コメントの件数を取得 73 $comments = $stmt->fetchColumn(); 74 //ページ数を計算 75 $max_page = ceil($comments / $num); 76 echo '<p>'; 77 for ($i = 1; $i <= $max_page; $i++){ 78 echo '<a href="fot.php?page=' . $i . '">' . $i . 79 '</a>&nbsp;'; 80 } 81 echo '</p>'; 82?> 83<span class="form"> 84 <form action="write.php" method="post"> 85 <p>名前:<input type="text" name="name"></p> 86 <p>タイトル:<input type="text" name="title"></p> 87 <textarea name="body"></textarea> 88 <p><input type="submit" value="書き込む">&nbsp;&nbsp;<input type="reset" value="リセット"></p> 89 </form> 90 </span><!-- form --> 91 </div><!-- nav-content終了 --> 92 </div><!-- ハンバーガー終了 --> 93 94 95 96<div id="nav-drawer1"><!-- ハンバーガー開始 --> 97<input id="nav-input1" type="checkbox" class="nav-unshown1"> 98 <label id="nav-open1" for="nav-input1"> 99 <img src="img/a.jpg" class="fot"> 100 </label><span></span> 101 <label class="nav-unshown1" id="nav-close1" for="nav-input1"></label> 102 <div id="nav-content1"> 103<img src="img/a.jpg" width="550" height="400"> 104 105<?php 106 // 1ページに表示されるコメントの数 107 $num = 3; 108 109 //データベースに接続 110 $dsn = 'mysql:host=localhost;dbname=db11;charset=utf8'; 111 $user = 'db11user'; 112 $password = '1111'; //DBパスワード 113 114 //ページ数が指定されているとき 115 $page = 0; 116 if (isset($_GET['page']) && $_GET['page'] > 0) { 117 $page = intval($_GET['page']) -1; 118 } 119 120try { 121 $db = new PDO($dsn, $user, $password); 122 $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 123 //プリペアドステートメントを作成 124 $stmt = $db->prepare( 125 "SELECT * FROM bbs1 ORDER BY date DESC LIMIT 126 :page, :num" 127 ); 128 //パラメータを割り当て 129 $page = $page * $num; 130 print_r($db->errorInfo()); 131 $stmt->bindParam(':page', $page, PDO::PARAM_INT); 132 $stmt->bindParam(':num', $num, PDO::PARAM_INT); 133 //クエリの実行 134 $stmt->execute(); 135} catch(PDOException $e) { 136 echo "エラー:" . $e->getMessage(). "\n" . $e->getTraceAsString(); 137} 138?> 139 140 141<?php 142 while ($row = $stmt->fetch()): 143 $title = $row['title'] ? $row['title'] : '(無題)'; 144?> 145 <p>名前:<?php echo $row['name'] ?></p> 146 <p>タイトル:<?php echo $title ?></p> 147 <p><?php echo nl2br($row['body'], false) ?></p> 148 <p><?php echo $row['date'] ?></p> 149<?php 150 endwhile; 151 152 //ページ数の表示 153 try { 154 //プリペアドステートメント作成 155 $stmt = $db->prepare("SELECT COUNT(*) FROM bbs1"); 156 //クエリ 157 $stmt->execute(); 158 } catch (PDOException $e){ 159 echo "エラー:" . $e->getMessage(). "\n" . $e->getTraceAsString(); 160 } 161 162 //コメントの件数を取得 163 $comments = $stmt->fetchColumn(); 164 //ページ数を計算 165 $max_page = ceil($comments / $num); 166 echo '<p>'; 167 for ($i = 1; $i <= $max_page; $i++){ 168 echo '<a href="fot.php?page=' . $i . '">' . $i . 169 '</a>&nbsp;'; 170 } 171 echo '</p>'; 172?> 173 </span> 174 175<span class="form"> 176 <form action="write1.php" method="post"> 177 <p>名前:<input type="text" name="name"></p> 178 <p>タイトル:<input type="text" name="title"></p> 179 <textarea name="body"></textarea> 180 <p><input type="submit" value="書き込む">&nbsp;&nbsp;<input type="reset" value="リセット"></p> 181 </form> 182 </span><!-- form --> 183 184 </div><!-- nav-content終了 --> 185 </div><!-- ハンバーガー -->

(write1.php)

PHP

1 2 3<?php 4 5 // エラー表示 6error_reporting(E_ALL); 7ini_set('display_errors', '1'); 8 9 // データの受け取り 10 $name = $_POST['name']; 11 $title = $_POST['title']; 12 $body = $_POST['body']; 13 14 //必須項目チェック(名前か本文が空ではないか?) 15 if ($name == '' || $body == ''){ 16 header('Location: fot.php'); // fot.phpへ移動 17 exit(); //終了 18} 19 //データベースに接続 20 $dsn = 'mysql:host=localhost;dbname=db11;charset=utf8'; 21 $user = 'db11user'; 22 $password = '1111'; // 設定したパスワード 23 24try { 25 $db = new PDO($dsn, $user, $password); 26 $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 27 $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 28} catch (PDOException $e) { 29 die ('エラー:' . $e->getMessage() . "\n" . $e->getTraceAsString()); 30} 31 32 $stmt = $db->prepare(" 33 INSERT INTO bbs1 (name, title, body, date ) 34 VALUES (?, ?, ?, now() )" 35 ); 36 37 //パラメータを割り当て 38 $stmt->bindParam(1, $name, PDO::PARAM_STR); 39 $stmt->bindParam(2, $title, PDO::PARAM_STR); 40 $stmt->bindParam(3, $body, PDO::PARAM_STR); 41 42 //クエリの実行 43 $stmt->execute(); 44 45 //fot.phpに戻る 46 header('Location: fot.php'); 47 exit(); 48 49?> 50 51 52

試したこと

下記コードを削除するとエラーは消えるのですが、
掲示板の意味がなくなってしまいます。
どこを修正したら良いでしょうか?

PHP

1<?php 2 // 1ページに表示されるコメントの数 3 $num = 3; 4 5 //データベースに接続 6 $dsn = 'mysql:host=localhost;dbname=db11;charset=utf8'; 7 $user = 'db11user'; 8 $password = '1111'; //DBパスワード 9 10 //ページ数が指定されているとき 11 $page = 0; 12 if (isset($_GET['page']) && $_GET['page'] > 0) { 13 $page = intval($_GET['page']) -1; 14 } 15 16try { 17 $db = new PDO($dsn, $user, $password); 18 $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 19 //プリペアドステートメントを作成 20 $stmt = $db->prepare( 21 "SELECT * FROM bbs1 ORDER BY date DESC LIMIT 22 :page, :num" 23 ); 24 //パラメータを割り当て 25 $page = $page * $num; 26 print_r($db->errorInfo()); 27 $stmt->bindParam(':page', $page, PDO::PARAM_INT); 28 $stmt->bindParam(':num', $num, PDO::PARAM_INT); 29 //クエリの実行 30 $stmt->execute(); 31} catch(PDOException $e) { 32 echo "エラー:" . $e->getMessage(). "\n" . $e->getTraceAsString(); 33} 34?>

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

エラーじゃないですよ。
ご自身で配列と思われるものを出力されてますよね。

php

1print_r($db->errorInfo());

現在のタイトルだと何が問題かわかりにくいので、起きている問題や課題・要件をタイトルとしてください。

投稿2018/10/15 21:53

m.ts10806

総合スコア80850

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

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

torinoto7

2018/10/15 22:12

早急にご回答頂き有り難うございました!
m.ts10806

2018/10/15 22:15

解決につながったようで何よりです。 質問は編集できるので適宜ご対応いただければと。 同じタイトルで別要件が並ぶとみている人を困惑させるだけになります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問