前提・実現したいこと
xammpを使用してhtmlとphpで送信フォームを作りMYSQLへデータを挿入しようとしています。
発生している問題・エラーメッセージ
エラーを一つずつ調べて解決していたのですが、
データを入力して送信フォームのボタンを押すと
エラー:could not find driver
と表示されてしまいます。これがどうしても解決できません。
該当のソースコード
データ送信フォーム
form.html <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>phpファームテスト</title> </head> <body> <div style="font-size:14px">PHPのテスト</div> <form name="form" method="post" action="view.php">氏 : <br> <input type="text" name="last_name"> <br> 名 : <br> <input type="text" name="first_name"><br> 年齢 : <br> <input type="text" name="age"><br> <input type="submit" value="送 信"> </form> </body> </html>
受け取る側の view.php
<!DOCTYPE html> <html lang="ja"> <head> <title>pdoとの連携テスト</title> </head> <body> <?php $db_user = "******"; $db_pass = "+++++"; $db_host = "localhost"; $db_name = "sampledb"; $db_mysql = "mysql"; $dsn ="$db_type:host=$db_host;dbname=$db_name;charset=utf8"; try { $pdo = new PDO($dsn,$db_user,$db_pass); $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false); print"接続しました...<br>"; } catch(PDOException $Exception){ die('エラー:'.$Exception->getMessage()); } try { $pdo->beginTransaction(); $sql = "INSERT INTO member(last_name,first_name,age) VALUES(:last_name,:first_name,:age)"; $stmh = $pdo->prepare($sql); $stmh->bindValue(':last_name',$_POST{'last_name'},PDO::PARAM_STR); $stmh->bindValue(':first_name',$_POST{'first_name'},PDO::PARAM_STR); $stmh->bindValue(':age',$_POST{'age'},PDO::PARAM_INT); $stmh->execute(); $pdo->commit(); print"データを".$stmh->rowCount()."件、入力しました。<br>"; } catch (PDOException $Exception) {$pdo->rollBack(); print"エラー:".$Exception->getMessage(); } ?> </body> </html>
試したこと
phpinfo()、php.iniにてextension_dirの場所は確認済み。
コマンドプロンプトにて C:\xampp\php\ext>php -r phpinfo(); | findstr extension_dir
を入れると アクセスが拒否されました。 と表示されるので何か問題はあるのは解るのですが
解決策が解りません。初歩的な何かを見過ごしているのでしょうか?
よろしくお願いします。
追記 回答ありがとうございます。
エラーは
エラー could not find driver
これで全文になります。
https://teratail.com/questions/95247及びそちらの記事に載っているリンク先の記事も
見たのですがphpinfo()のPDO driversのとこにmysqlにはちゃんと表示されています。
バージョンアップしたとあったので私の環境は先週xammpをインストールしたばかりなので
少し違うのかなと思っていました。
php-mysqlndをインストールしてみればいいのでしょうか。
追記2
再インストールしてポート番号の変更(80はシステムが使用していて使えない為)と
https://techacademy.jp/magazine/2412 こちらの文字化け対策だけ変更し、
$db_type = null;を削除して実行しましたところ
Notice: Undefined variable: db_type in C:\xampp\htdocs\view.php on line 15
エラー:could not find driver
と表示されました。
phpinfo()には
PDO drivers mysql, sqlite
extension_dir の場所も正しいです。
回答2件
あなたの回答
tips
プレビュー