95353


PHPでユーザー管理のサイトを作成していますが、最後の完了サイトでエラーになります。  
エラー内容は以下の通りで77行目を指摘しています。

[code]

    Parse error: syntax error, unexpected token "else", expecting end of file
    
[/code]

構文エラーと、カッコを閉じていない際に出るエラーの2つが77行目で出ていると思いますが、elseの前後を確認しても、問題が発見できませんでした。  
また、カッコの閉じ忘れも発見できませんでした。  
原因調査に協力いただければと存じます。  
77行目は  
else {  
です。  
ソースコードを添付いたします。

[code]

    <?php
        if($_SERVER["REQUEST_METHOD"]==="POST") {
            header("location: http://localhost/Portfolio/user_create_commit.php");
            exit;
            }
    
        try{
            require_once('db_connect.php');
            }
        catch(PDOException $e)
                {
                    echo "次がエラーの内容です。;" .$e->getMessage();
                }
    
        function escape($val)
        {
            return htmlspecialchars($val, ENT_QUOTES | ENT_HTML5, 'UTF-8');
        }
    
        require_once('password_hash.php'); 
    
    ?>
    <!doctype html>
    <html lang=ja>
        <head>
            <meta charset="utf-8">
            <title>ユーザーメンテナンス（完了）</title>
            <meta name="description" content="ユーザーの修正画面">
            <!--リセットcss-->
            <link rel="stylesheet" href="https://unpkg.com/ress/dist/ress.min.css">
            <!--css-->
            <link href="css/user_style.css" rel="stylesheet">
            <!--レスポンシブ対応-->
            <meta name="viwport" content="width=device-width, initial-scale=1">
            <!--Googleフォント-->
            <link href="https://fonts.googleapis.com/css2?family=Sawarabi+Gothic&display=swap" rel="stylesheet">
            <link href="https://fonts.googleapis.com/css2?family=Shippori+Mincho:wght@500&display=swap" rel="stylesheet">
        </head>
        <body>
            <h1>ユーザーメンテナンス（完了）</h1>
            <?php
                $sql=$pdo->prepare('insert into user_table(id,last_name,first_name,last_name_kana,first_name_kana,user,password) values (null,?,?,?,?,?,?)');
                    if(empty($_POST['sei']) || empty($_POST['mei']) || empty($_POST['sei_kana']) || empty($_POST['mei_kana']) || empty($_POST['user']) || empty($_POST['password']) || empty($_POST['password2']))
                        {
                            echo '未入力の項目があります。';
                        }
                        else if(!preg_match('/\A[ァ-ヴー]+\z/u', $_POST['sei_kana']) || !preg_match('/\A[ァ-ヴー]+\z/u', $_POST['mei_kana']))
                            {
                                 echo 'カナ名は全角カナで入力してください。';
                            }
                            else if(!preg_match('/\A[a-zA-Z0-9!-\/:-@[-`{-~]+\z/u', $_POST['user']))
                                {
                                    echo 'ユーザーは半角英数字記号で入力します';
                                }
                                else if(!preg_match('/\A[a-zA-Z0-9!-\/:-@[-`{-~]{10,}\z/u', $_POST['password']))
                                    {
                                        echo 'パスワードは半角英数字記号10文字以上で入力します。';
                                    }
                                    else if(!preg_match('/\A[a-zA-Z0-9!-\/:-@[-`{-~]{10,}\z/u', $_POST['password2']))
                                        {
                                            echo 'パスワードは半角英数字記号10文字以上で入力します。';
                                        }
                                        else if($_POST['password'] !== $_POST['password2'])
                                            {
                                                echo '2つのパスワードが一致してません。';
                                            }
                                            else if($sql->execute(
                                                    [escape($_POST['sei']),
                                                    escape($_POST['mei']),
                                                    escape($_POST['sei_kana']),
                                                    escape($_POST['mei_kana']),
                                                    escape($_POST['user']),
                                                    htmlspecialchars($pass,ENT_QUOTES | ENT_HTML5,'UTF-8')]));
                                                {
                                                    echo '<p class="msg">','登録に成功しました。','<p>';
                                                }   
                                                else {
                                                            echo '<P class="msg">','登録に失敗しました。','</p>';
                                                        }
            ?>
            <p class=return><a href="user_table.php">ユーザーメンテナンスへ戻る</a></p>
        </body>
    </html>
    
[/code]


CC BY-SA 4.0
2023-06-24T07:04:47.727
95351
2023-06-24T07:38:43.253
2023-06-24T07:38:43.253
3060
58703
question
php
PHP でエラー Parse error: syntax error, unexpected token "else", expecting end of file


67-73行目の `if` 文で、末尾の `;` が余計だと思います。

**元のコード(抜粋):**

[code]

    else if($sql->execute(
        // ...
        htmlspecialchars($pass,ENT_QUOTES | ENT_HTML5,'UTF-8')])); // <-- ";" が余計
    {
    
[/code]

**修正後:**

[code]

    else if($sql->execute(
        [escape($_POST['sei']),
        escape($_POST['mei']),
        escape($_POST['sei_kana']),
        escape($_POST['mei_kana']),
        escape($_POST['user']),
        htmlspecialchars($pass,ENT_QUOTES | ENT_HTML5,'UTF-8')]))
    {
        echo '<p class="msg">','登録に成功しました。','<p>';
    }
    
[/code]


CC BY-SA 4.0
2023-06-24T07:37:35.727
95353
2023-06-24T07:37:35.727
3060
95351
answer