PHP mysql Mampの id「root」のパスワードが「''」ではなく「root」だった話し

phpファイルからmysqlのDBへの接続がエラーになった原因を探した結果

https://qiita.com/Masataka_Sugi/items/30fa760a4c0c0699857a

を参考にしたところ。

MAMP

id:root

pass:root

としたら解決

エラーの時は

id:root

pass:''

としていた。

 

 

コードはこちら

index.php

<?php

?>

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div><a href="select.php">データ一覧</a></div>

<form action="insert.php" method='post'>
<fieldset>
<legend>フリーアンケート</legend>
<label>名前:<input type="text" name='name'></label><br>
<label>Email:<input type="text" name='email'></label><br>
<label>Email:<textarea name="naiyou" cols="40" rows="4"></textarea></label><br>
<input type="submit" value='送信'>
</fieldset>
</form>
</body>
</html>

 

insert.php(index.phpでpostしているファイル)

<?php



//受信チェック(おまじない。入力の頭にこれをいれる)
if(
!isset($_POST['name']) || $_POST['name'] == ''||
!isset($_POST['email']) || $_POST['email'] == ''||
!isset($_POST['naiyou']) || $_POST['naiyou'] == ''
){
exit('ParamError');
};

//1.postデータ登録
$name=$_POST['name'];
$email=$_POST['email'];
$naiyou=$_POST['naiyou'];


//2.DB接続します(エラー処理追加) DB接続の時はこれをそのまま使う
try {//tryとcatchでエラーを検出しているとひとまず覚える。ここはおまじない。
$pdo = new PDO('mysql:dbname=gs_db;charset=utf8;host=localhost', 'root','root');//この1行でDB接続してる。localhostの部分はサーバーにあげる時はさくらのIPアドレスをいれる。rootとはIDのことxampだと最初mysqlのIDにrootが設定されていてパスワードはなし。''はパスワード。xampでは最初パスワードがないため空文字にしている。さくらのサーバーにあげる時はさくらから送られたIDとパスワードに変更する。
//→つまり:localhost, root, '', はさくらの内容にサーバーあげる時変更が必要!
//MAMPid:root, pass:rootだった!
} catch (PDOException $e){
exit('DbConnectError:'.$e->getMessage());//エラーが出た時にこの行が表示される。
}



//3.データ登録SQL作成
//3-1: sql作る処理
$sql = 'INSERT INTO gs_an_table(id, name, email, naiyou,
indate)VALUES(NULL, :a1, :a2, :a3, sysdate())';//ここの:a1,:a2,:a3下の記述とリンクしている


//3-2: sql文をstmtに渡す処理
$stmt = $pdo->prepare($sql); //上で定義した変数 $sqlをここで関数prepareへ渡している

//3-3: 関連付けをして、a1などが入っていれば3-1の同じ文字に紐付ける
$stmt->bindValue(':a1', $name, PDO::PARAM_STR);//文字列の場合は左の様に書く。 Integer:数値の場合は(PDO::PARAM_INT)と書く
$stmt->bindValue(':a2', $email, PDO::PARAM_STR);
$stmt->bindValue(':a3', $naiyou, PDO::PARAM_STR);
// $stmt->bindValue(':a4', $test, PDO::PARAM_INT);←数値の場合はこの様に書く

//3-4: 最後に実行する
$status = $stmt->execute();//このexecuteで上で処理した内容を実行している


//4.データ登録処理後(基本コピペで動くと覚えればOK)
if($status == false){//エラーの時の処理
$error =$stmt->errorInfo();
exit('QueryError:'.error[2]);

}else{//エラーがなければこちらの処理が実行される
//5. index.phpへリダイレクト
header('Location: index.php');//処理が終わったら指定URLへ移動する(必ずindex.php出なくても良い)。Location:の「:」の後ろには必ず半角スペースをいれる
}exit;


?>