PHPでMySQL接続処理を共通化させたいと思い、
『初心者からちゃんとしたプロにになるPHP基礎入門』を参考に作成しました。
・データベースの名前はdbname(本来は違う名前を設定しています)
・パスワードはpassword(本来は違う名前を設定しています)
・localhostで接続
・rootで接続
とします。
まず、共通化する部分はfunction.phpとし
PHP
function str2html(string $string) :string{ return htmlspecialchars($string, ENT_QUOTES, 'UTF-8'); } function db_open() :PDO{ $user = "root"; $password = "pssword"; $opt = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTOPN, PDO::ATTR_EMULATE_PREPARES => false, PDO::MYSQL_ATTR_MULTI_STATEMENTS => false, ]; $dbh = new PDO('mysql:host=localhost;dbname=dbname', $user, $password, $opt); return $dbh; } var_dump($dbh);
本来はvar_dumpすると、
function.php
object(PDO)#1 (0) {}
と接続できたことがわかるはずですが、今は
function.php
Warning: Undefined variable $dbh in C:\xampp\htdocs\function.php on line 36 NULL
となってしまいます。
本通りに記述しているのですが、何が間違っているのでしょうか?
共通化する前に記述していた、
PHP
$dsn = 'mysql:dbname=dbname;host=localhost;charset=utf8'; $user = 'root'; $password = 'password'; try{ $dbh = new PDO($dsn, $user, $password,[ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, ]); echo '接続成功'; } catch(PDOException $e){ echo '接続失敗'. $e-> getMessage(); exit(); };
ではきちんと接続できていたので、パスワード等の間違いはありません。
まだ回答がついていません
会員登録して回答してみよう