前提・実現したいこと
MAMPで環境を構築し、ローカルホストからページを表示できるようになりました。
その後DBに接続したいのですが、try catch でエラーが出ています・・・。
発生している問題・エラーメッセージ
object(PDOException)#2 (8) { ["message":protected]=> string(44) "SQLSTATE[HY000] [2019] Unknown character set" ["string":"Exception":private]=> string(0) "" ["code":protected]=> int(2019) ["file":protected]=> string(50) "/Applications/MAMP/htdocs/staff/staff_add_done.php" ["line":protected]=> int(25) ["trace":"Exception":private]=> array(1) { [0]=> array(6) { ["file"]=> string(50) "/Applications/MAMP/htdocs/staff/staff_add_done.php" ["line"]=> int(25) ["function"]=> string(11) "__construct" ["class"]=> string(3) "PDO" ["type"]=> string(2) "->" ["args"]=> array(3) { [0]=> string(46) "mysql:dbname=shop;host=localhost;charset=utf-8" [1]=> string(4) "root" [2]=> string(0) "" } } } ["previous":"Exception":private]=> NULL ["errorInfo"]=> NULL }
該当のソースコード
php
1 2 3try{ 4 $staff_name = $_POST['name']; 5 $staff_pass = $_POST['pass']; 6 7 $staff_name = htmlspecialchars($staff_name,ENT_QUOTES,'UTF-8'); 8 $staff_pass = htmlspecialchars($staff_pass,ENT_QUOTES,'UTF-8'); 9 10 $dsn = 'mysql:dbname=shop;host=localhost;charset=utf-8'; 11 $user = 'root'; 12 $password = 'root'; 13 $dbh = new PDO($dsn,$user,$password); 14 $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 15 16 $sql = 'INSERT INTO mst_staff (name, password) VALUES (?,?)'; 17 $stmt = $dbh->prepare($sql); 18 $data[] = $staff_name; 19 $data[] = $staff_pass; 20 $stmt->execute($data); 21 22 $dbh = null; 23 24 print $staff_name; 25 print 'さんを追加しました。<br>'; 26} 27catch(Exception $e) { 28 print 'ただいま障害により大変ご迷惑をおかけしております。'; 29 var_dump($e); 30 exit(); 31} 32 33?>
試したこと
MySQLへの接続PWを空っぽでやってみたり、MAMPを再起動してみたりましたが、
「ただいま障害により大変ご迷惑をおかけしております。」が表示されます。
初歩的な質問ですみませんが、考えうる確認箇所をご指摘いただければと思います。
よろしくお願いします。
補足情報(FW/ツールのバージョンなど)
PHP 7.3.8
MySQL 5.7.26
そのほかに必要な情報がありましたら、ご指摘いただければありがたいです。
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー