###### tags: `ready for review` # データベースから取得した値を表示(タイトル仮) <span style="color: red; ">memo</span> 前置きが思いつきません😇 ## データベースに接続しよう [以前作成したindex.php](https://hackmd.io/@GH-wNvm-QfG5Y89-RmIY8g/HyEACrfK_)を準備して下さい。 まずはPHPタグを用意してPHPを埋め込めるようにしましょう。 ```php= <form action="confirm.php" method="POST"> <textarea name="content" maxlength="140"></textarea> <button>入力内容を確認する</button> </form> <?php ?> ``` PHPタグの準備ができたらPDOを使用してデータベースと接続してみましょう。 また、接続がうまくいかない時はエラーを表示されるようにしてみましょう。 PDOの使い方を忘れてしまった方は[こちら](https://hackmd.io/@GH-wNvm-QfG5Y89-RmIY8g/Sk0iaZMcu)を参考にして下さい。 ```php= <form action="confirm.php" method="POST"> <textarea name="content" maxlength="140"></textarea> <button>入力内容を確認する</button> </form> <?php try { // 慣習としてPDOインスタンスはdbh(データベースハンドルの略)にする $dbh = new PDO("mysql:dbname=SQL_lesson;host=localhost;charset=utf8", "root"); } catch(PDOException $e) { echo "エラーメッセージ : " . $e -> getMessage(); } ?> ``` ## データベースから値を取得しよう queryメソッドを使用してblogsテーブルのレコードを全て取得しましょう。 queryメソッドの結果は配列になっているのでforeachを使用して要素を一つずつ取り出してみましょう。 ```php= <form action="confirm.php" method="POST"> <textarea name="content" maxlength="140"></textarea> <button>入力内容を確認する</button> </form> <?php try { // 慣習としてPDOインスタンスはdbh(データベースハンドルの略)にする $dbh = new PDO("mysql:dbname=SQL_lesson;host=localhost;charset=utf8", "root"); $sql = "SELECT * FROM blogs"; $stmt = $dbh->query($sql); foreach($stmt as $record){ print_r($record); } } catch(PDOException $e) { echo "エラーメッセージ : " . $e -> getMessage(); } ?> ``` 実行環境によって出力される結果は異なりますが、 以下のように連想配列が表示されていたら成功です。  今度は連想配列の中から`content`のキーと対になっている値を表示できるようにします。 連想配列のキーと対になっているバリューを取得するには`連想配列が格納されている変数["キー名"]`でしたね。 ```php= <form action="confirm.php" method="POST"> <textarea name="content" maxlength="140"></textarea> <button>入力内容を確認する</button> </form> <?php try { // 慣習としてPDOインスタンスはdbh(データベースハンドルの略)にする $dbh = new PDO("mysql:dbname=SQL_lesson;host=localhost;charset=utf8", "root"); $sql = "SELECT * FROM blogs"; $stmt = $dbh->query($sql); foreach($stmt as $record){ echo $record["content"]; } } catch(PDOException $e) { echo "エラーメッセージ : " . $e -> getMessage(); } ?> ``` ## 表形式で出力できるようにしよう tableタグでPHPタグを囲いましょう。 今回は表が分かりやすいようにtableタグにborder属性を付与しておきます。 表示したい項目は`id`と`content`なのでthタグでそれぞれ囲みます。 ```php= <form action="confirm.php" method="POST"> <textarea name="content" maxlength="140"></textarea> <button>入力内容を確認する</button> </form> <table border="1"> <tr> <th> id </th> <th> content </th> </tr> <?php try { // 慣習としてPDOインスタンスはdbh(データベースハンドルの略)にする $dbh = new PDO("mysql:dbname=SQL_lesson;host=localhost;charset=utf8", "root"); $sql = "SELECT * FROM blogs"; $stmt = $dbh->query($sql); foreach($stmt as $record){ echo $record["content"]; } } catch(PDOException $e) { echo "エラーメッセージ : " . $e -> getMessage(); } ?> </table> ``` 以下のような見た目になっているか確認しましょう。  先ほどまではSQLで取得した結果を文字としてそのまま出力していましたが、 今度はタグで囲った状態で出力していきます。 まずは以下のような親子関係で出力するにはどうすればいいのか考えてみましょう。 ```htmlembedded= <tr> <td></td> <td></td> </tr> ``` ブラウザがタグを解析する際にインデント(段落)や改行は関係ないので、 ```php= echo "<tr><td></td><td></td></tr>"; ``` このような形になります。 それではこの記述をforeachの中に組み込んで、idカラムとcontentカラムの値をそれぞれ取得できるようにしてみましょう。 文字列内で変数を利用するには変数展開が必要です。 忘れてしまった方はPHP基礎に戻ってしっかり復習しておきましょう。 ```php= <form action="confirm.php" method="POST"> <textarea name="content" maxlength="140"></textarea> <button>入力内容を確認する</button> </form> <table border="1"> <tr> <th> id </th> <th> content </th> </tr> <?php try { // 慣習としてPDOインスタンスはdbh(データベースハンドルの略)にする $dbh = new PDO("mysql:dbname=SQL_lesson;host=localhost;charset=utf8", "root"); $sql = "SELECT * FROM blogs"; $stmt = $dbh->query($sql); foreach($stmt as $record){ echo "<tr><td>{$record['id']}</td><td>{$record['content']}</td></tr>"; } } catch(PDOException $e) { echo "エラーメッセージ : " . $e -> getMessage(); } ?> </table> ``` データベースに格納されていたデータが表形式で表示されていたら完成です。  今回はデータベースから取得したデータを表形式で出力する方法を解説しました。 取得したデータをタグと一緒に出力することはよくあるので覚えておきましょう。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up