前提・実現したいこと
PHPを用いて、簡単な掲示板のようなものを作成しようとしています。
MySQLからデータを取得して、画面上に表示したいです。
発生している問題・エラーメッセージ
「このページは動作していません」 「localhost では現在このリクエストを処理できません。」 「HTTP ERROR 500」 上記の3点がブラウザ上に表示されます。 また、「php_error.log」では以下のエラー内容が表示されております。 「[01-Oct-2020 00:20:00 UTC] PHP Parse error: syntax error, unexpected 'catch' (T_CATCH) in /Applications/MAMP/htdocs/index.php on line 38」 環境構築はMAMPを用いて行っております。
該当のソースコード
php
1<?php 2 $user = "ユーザー名"; 3 $password = "パスワード"; 4 $dbName = "messagedb"; 5 $host = "localhost:8889"; 6 $dsn = "mysql:host = {$host};dbname = {$dbName};charset = utf8"; 7?> 8 9<!DOCTYPE html> 10<html lang = "ja"> 11 <head> 12 <meta charset="utf-8"> 13 <title>MyBBS</title> 14 </head> 15 16 <body> 17 <h1>投稿一覧</h1> 18 <div> 19 <?php 20 try { 21 $pdo = new PDO($dsn, $user, $password); 22 $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 23 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 24 echo "データベース{$dbName}に接続しました。", "<br>"; 25 $sql = "SELECT * FROM post"; 26 $stm = $pdo->prepare($sql); 27 $stm->execute(); 28 $result = $stm->fetchAll(PDO::FETCH_ASSOC); 29 foreach ($result as $row){ 30 echo $row['name']; 31 echo $row['time']; 32 echo $row['message']; 33 } catch (Exception $e) { 34 echo '<span class = "error">エラーがありました。</span><br>'; 35 echo $e->getMessage(); 36 exit(); 37 } 38 } 39 ?> 40 </div> 41 </body> 42</html>
試したこと
「HTTP ERROR 500」ということで、Apacheは正常に動いているということをWeb検索で知ったので、文法に間違いがないかを探しました。
エラーログにおいては、「syntax error, unexpected 'catch' 」と出ているが、なんでここがシンタックスエラーになるのかがわかりません。
まだphp初めて3日目で、正直どこの文法がおかしいのかがわかりません。
少しでも引っかかるポイントがあれば教えて頂きたいです。
よろしくお願いします。
補足情報(FW/ツールのバージョンなど)
phpのバージョンは「7.1」です。
回答4件
あなたの回答
tips
プレビュー