95241


以下のシンタックスエラーが発生します。

[code]

    Parse error: syntax error, unexpected identifier "id", expecting "," or ";" in C:\xampp\htdocs\Portfolio\user_table.php on line 38
    
[/code]

38行目の `$data['id']` 付近で何か問題かと思うのですが、`htmlspecialchars`
が何か邪魔しているのかと思い、削除してみても結果は同じでした。  
念のため、id="seq"を削除してみましたが結果は同じでした。  
エラー原因をお教えいただけないでしょうか。

ソースを添付します。

[code]

    <!doctype html>
    <html lang=ja>
        <head>
            <meta charset="utf-8">
            <title>ユーザーメンテナンス</title>
            <meta name="description" content="Salon Yuri-rinの管理者ページ">
            <!--リセットcss-->
            <link rel="stylesheet" href="https://unpkg.com/ress/dist/ress.min.css">
            <!--css-->
            <link href="css/ad_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>
            <?php
                try{
                require_once("db_connect.php");
                $pdo = new PDO("mysql:host=$SERV;dbname=$DB;charset=$CHAR",$USER,$PASS);
                $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
                $sql = "select id,last_name,first_name,user,password from user_table";
                $stmt = $pdo->query($sql);
                $row = $stmt->fetchAll(PDO::FETCH_ASSOC);
                foreach($row as &$data)
                    var_dump($data);
                 {
                    echo '<h1>','ユーザーメンテナンス','</h1>';
                    echo '<form action="?" method="post">';
                    echo '<tr>';
                    echo '<th class="header">','姓','</th>';
                    echo '<th class="header">','名','</th>';
                    echo '<th class="header">','ユーザー','</th>';
                    echo '<th class="header">','パスワード','</th>';
                    echo '<th class="header2">','<input type="submit" name="button" value="登録" formaction="user_create.php">','</th>';
                    echo '<tr>';
                    echo '<input type="hidden" name="seq" value="htmlspecialchars($data['id'], ENT_QUOTES | ENT_HTML5, 'UTF-8')" id="seq">';
                    echo '<td class="dt">','<input type="text" name="sei" value="htmlspecialchars($data['last_name'], ENT_QUOTES | ENT_HTML5, 'UTF-8')" id="sei" readonly="readonly">','</td>';
                    echo '<td class="dt">','<input type="text" name="mei" value="htmlspecialchars($data['first_name'], ENT_QUOTES | ENT_HTML5, 'UTF-8')" id=mei readonly="readonly">','</td>';
                    echo '<input type="hidden" name="sei_kana" value="htmlspecialchars($data['last_name_kana'], ENT_QUOTES | ENT_HTML5, 'UTF-8')" id="sei_kana">';
                    echo '<input type="hidden" name="mei_kana" value="htmlspecialchars($data['first_name_kana'], ENT_QUOTES | ENT_HTML5, 'UTF-8')" id="mei_kana">';
                    echo '<td class="dt">','<input type="text" name="user" value="htmlspecialchars($data['user'], ENT_QUOTES | ENT_HTML5, 'UTF-8')" id="user" readonly="readonly">','</td>';
                    echo '<td class="dt">','<input type="password" name="password" value="htmlspecialchars($data['password'], ENT_QUOTES | ENT_HTML5, 'UTF-8')" id="password" readonly="readonly">','</td>';
                    echo '<td>';
                    echo '<input type=submit name=botton value="修正" formaction="user_update.php">';
                    echo '</td>';
                    echo '<td>';
                    echo '<input type=submit name=botton value="修正" formaction="user_delete.php">';
                    echo '</td>';
                    echo '</tr>';
                    echo "\n";
                    echo '</table>';
                    echo '</form>';
                }
            }
            catch(PDOException $e){echo "次がエラーの内容です。;" .$e->getMessage();}
            ?>
        </body>
    </html>
    
[/code]


CC BY-SA 4.0
2023-06-15T04:56:46.407
95236
2023-06-15T06:54:40.170
2023-06-15T05:58:23.023
3060
58703
question
php
syntax errorについて


シングルクォーテーションで括られた文字列の中にシングルクォーテーションを入れ子にできないため、コンパイルエラーになります。  
入れ子にしたい場合は`\'`のようにエスケープしてください。

[code]

    echo 'a'b'c';   // コンパイルエラー
    'a\'b\'c'; // OK
    
[/code]

また、ご質問の例ではシングルクォーテーションの中に[htmlspecialchars](https://www.php.net/manual/ja/function.htmlspecialchars.php)が入っていますが、これはただの文字列として動作して式評価されません。  
下記のようにhtmlspecialcharsの戻り値の文字列と通常の文字列を`.`で連結することで、求める値になりそうです。

[code]

    <?php
    $data = array('id' => '<1>');
    echo '<input value="' . htmlspecialchars($data["id"], ENT_QUOTES | ENT_HTML5, "UTF-8") . '" id="seq">';
    ?>
    
[/code]


CC BY-SA 4.0
2023-06-15T06:54:40.170
95241
2023-06-15T06:54:40.170
9820
95236
answer