前提
ここに質問の内容を詳しく書いてください。
PHPの学習を再度はじめようと思い、環境を再構築しました。
気づけばプロ並みPHP改訂版の73ぺーじの2-4-1のデータベースの
接続ですが、try-catch文でどうしてもcatch文の取得がされてしまい、
スタッフ名の登録が行いない状況です。
有識者の方、ご助言をお願いします。
実現したいこと
データベースを接続し、スタッフ名を登録できるようにする
発生している問題・エラーメッセージ
原因を調べるためcatchに下記を入力し,出力してみました。
SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client
該当のソースコード
<?php try { $staff_name=$_POST['name']; $staff_pass=$_POST['pass']; $staff_name=htmlspecialchars($staff_name,ENT_QUOTES,'UTF-8'); $staff_pass=htmlspecialchars($staff_pass,ENT_QUOTES,'UTF-8'); $dsn='mysql:dbname=shop;host=localhost;charset=utf8'; $user='root'; $password='root'; $dbh=new PDO($dsn,$user,$password); $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $sql='INSERT INTO mst_staff (name,password) VALUES (?,?)'; $stmt=$dbh->prepare($sql); $data[]=$staff_name; $data[]=$staff_pass; $stmt->execute($data); $dbh=null; print $staff_name; print 'さんを追加しました。<br />'; } catch(Exception $e) { print 'ただいま障害により大変ご迷惑をお掛けしております。'; print $e->getMessage(); exit(); } ?> <a href="staff_list.php"> 戻る</a>
試したこと
・入力に誤りがないか確認をするため、書籍のサンプルコードを張り付けた
補足情報(FW/ツールのバージョンなど)
◆使用しているもの◆
windows10
xampp 7.4.1
php 7.4.1
Apache 2.4.41
mysql Ver 15.1 Distrib 10.4.11-MariaDB
回答1件