70435


エラーでコードがそのまま出ます

html

[code]

    <html>
    <head>
    <title>フォーム画面</title>
    <meta charset="utf-8">
    </head>
    <body>
    <h1>フォーム画面</h1> 
     
    <form action="pdo_insert.php" method="post">
    名前を入力：<input type="text" name="yourname">
    <input type="submit" value="登録する">
    </form>
     
    </body>
    </html>
    
[/code]

php

[code]

    <?php
    header("Content-type: text/html; charset=utf-8");
    
    if(empty($_POST)) {
        header("Location: pdo_form.html");
        exit();
    }else{
        //名前入力判定
        if (!isset($_POST['yourname'])  || $_POST['yourname'] === "" ){
            $errors['name'] = "名前が入力されていません。";
        }
    }
    
    if(count($errors) === 0){
        
        $dsn = 'mysql:host=localhost;dbname=test5;charset=utf8';
        $user = 'root';
        $password = 'root';
        
        try{
            $dbh = new PDO($dsn, $user, $password);
            $statement = $dbh->prepare("INSERT INTO name (name) VALUES (:name)");
            
            if($statement){
                $yourname = $_POST['yourname'];
                //プレースホルダへ実際の値を設定する
                $statement->bindValue(':name', $yourname, PDO::PARAM_STR);
                
                if(!$statement->execute()){
                    $errors['error'] = "登録失敗しました。";
                }
                
                //データベース接続切断
                $dbh = null; 
            }
            
        }catch (PDOException $e){
            print('Error:'.$e->getMessage());
            $errors['error'] = "データベース接続失敗しました。";
        }
    }
    
    ?>
    
    <!DOCTYPE html>
    <html>
        <head>
            <title>登録画面</title>
            <meta charset="utf-8">
        </head>
        <body>
            
            <?php if (count($errors) === 0): ?>
            <p><?=htmlspecialchars($yourname, ENT_QUOTES, 'UTF-8')."さんで登録いたしました。"?></p>
            <?php elseif(count($errors) > 0): ?>
            <?php
            foreach($errors as $value){
                echo "<p>".$value."</p>";
            }
            ?>
            <?php endif; ?>
            
        </body>
    </html>
    
[/code]

**手順**

  1. XAMPPを起動 (→ 青いマークに)
  2. ブラウザにhtmlファイルをドラッグ
  3. フォームに入力、エンター
  4. コードがそのまま表示される


CC BY-SA 4.0
2020-09-16T03:37:12.133
70429
2020-09-16T06:07:14.453
2020-09-16T05:36:10.077
3060
39481
question
php html
PHPでデータベースに接続するときにエラーが出る


単純な HTML であればブラウザへのドラッグ＆ドロップでも内容が表示されますが、PHP などを **プログラムとして動作させる** には Webサーバ
(Apache) を通してアクセスする必要があります。

具体的には、Apache のドキュメントルートに HTML や PHP を保存し、ブラウザには `http://localhost/`
経由でアクセスしてみてください。

[code]

    <XAMPPのインストール先>/htdocs/     ## <- このディレクリ以下に HTML や PHP を保存
    
[/code]

例えば、`htdocs/form.html` として保存したなら `http://localhost/form.html` になります。


CC BY-SA 4.0
2020-09-16T06:07:14.453
70435
2020-09-16T06:07:14.453
3060
70429
answer