詳細PHP7+MySQLという本のchapter13-2について、知恵をお借りしたいです。
MAMPを使い、phpMyAdminで作ったデータベースのテーブルをphpで表示することができません。
結果として、このように表示しています。
ソースコードはこれです。
php
1<?php 2//require_once("../../lib/util.php"); 3// データベースユーザ 4$user = 'testuser'; 5$password = 'pw4testuser'; 6// 利用するデータベース 7$dbName = 'testdb'; 8// MySQLサーバ 9$host = 'localhost:8809'; 10// MySQLのDSN文字列 11$dsn = "mysql:host={$host};dbname={$dbName};charset=utf8"; 12?> 13 14<!DOCTYPE html> 15<html lang="ja"> 16<head> 17<meta charset="utf-8"> 18<title>レコードを取り出す(すべて)</title> 19<link href="/style.css" rel="stylesheet"> 20<!-- テーブル用のスタイルシート --> 21<link href="../../css/tablestyle.css" rel="stylesheet"> 22</head> 23<body> 24<div> 25 <?php 26 //MySQLデータベースに接続する 27 try { 28 $pdo = new PDO($dsn, $user, $password); 29 // プリペアドステートメントのエミュレーションを無効にする 30 $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 31 // 例外がスローされる設定にする 32 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 33 echo "データベース{$dbName}に接続しました。", "<br>"; 34 // SQL文を作る(全レコード) 35 $sql = "SELECT * FROM member"; 36 // プリペアドステートメントを作る 37 $stm = $pdo->prepare($sql); 38 // SQL文を実行する 39 $stm->execute(); 40 // 結果の取得(連想配列で返す) 41 $result = $stm->fetchAll(PDO::FETCH_ASSOC); 42 // テーブルのタイトル行 43 echo "<table>"; 44 echo "<thead><tr>"; 45 echo "<th>", "ID", "</th>"; 46 echo "<th>", "名前", "</th>"; 47 echo "<th>", "年齢", "</th>"; 48 echo "<th>", "性別", "</th>"; 49 echo "</tr></thead>"; 50 // 値を取り出して行に表示する 51 echo "<tbody>"; 52 foreach ($result as $row){ 53 // 1行ずつテーブルに入れる 54 echo "<tr>"; 55 echo "<td>", es($row['id']), "</td>"; 56 echo "<td>", es($row['name']), "</td>"; 57 echo "<td>", es($row['age']), "</td>"; 58 echo "<td>", es($row['sex']), "</td>"; 59 echo "</tr>"; 60 } 61 echo "</tbody>"; 62 echo "</table>"; 63 } catch (Exception $e) { 64 echo '<span class="error">エラーがありました。</span><br>'; 65 echo $e->getMessage(); 66 exit(); 67 } 68 ?> 69</div> 70</body> 71</html> 72
データベースサーバアクセスできるのに、テーブルにはアクセスできません。
エラーを見るに、55行付近のesがダメなのかと思ったのですが、消してもうまくいかないので、完全お手上げ状態です。
どなたか、どこを直せばいいか教えてもらえると幸いです。
最悪、このソースコードがだめでも、ほかの方法でMAMPのデータベースにアクセスする方法をご存知の方がいましたら、教えてください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。