

何度もためしたのですが

phpからmysqlへの接続ができません

環境はmampです ファイルの置き方がおかしいのでしょうか？

.phpはhtdocsの下です

mysqlはターミナルからダウンロードしてphp接続しなかったらログインできます

php1.php

[code]

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

php2.php

[code]

    <?php
    header("Content-type: text/html; charset=utf-8");
     
    if(empty($_POST)) {
        header("Location: php1.php");
        exit();
    }else{
        //名前入力判定
        if (!isset($_POST['yourname'])  || $_POST['yourname'] === "" ){
            $errors['name'] = "名前が入力されていません。";
        }
    }
     
    if(count($errors) === 0){
        
        $dsn = 'mysql:host=my;dbname=sample01;charset=utf8';
        $user = 'use';
        $password = 'pass';
     
        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]

エラーは記述どおり

データベース接続失敗しました。

です

mysqlはダウンロードのものとmampのものとあるようですが 適したものはあるのでしょうか

またlocalhost側でもサーバー側でもmysql phpはosのもとでうごいているとおもいますが

phpがmysqlへつなぐのは

サーバー側でもおなじでしょうか

おなじサーバー内でおこっているのでしょうこ


CC BY-SA 4.0
2021-06-30T09:35:51.740
77880
2021-06-30T11:04:38.350
2021-06-30T11:04:38.350
39481
39481
question
php mysql
mysqlへのinsert