初めてQiitaに投稿します
ちょうど盆休みだったので、全く経験のないPHPでMySQLを連携させた簡易システムを作ってみました。
その際苦労した部分としてMySQL接続が上手くいかなかったので、その時の解決方法のメモ残したいと思います。
私の開発環境
開発環境
XAMPP:7.2.8
Apache: 2.4.34
MariaDB(以下MySQL):10.1.34
PHP:7.2.8
OS:Windows10
DB接続が上手くいかなかった原因
まずDB接続が上手くいかなかった原因としては、参考にした書籍のXAMMPが古く、
PHP5.3.5に対応した記述のままだった為、PHP7.2.8に対応する記載に変える必要があった。
今回の目的
PHP5.3.5のMySQL接続の部分をどのようにPHP7.2.8対応に書き換えればいいか記載してみたいと思います。
元のコード
//PHP5.3.5.ver
<?php
//省略
//DB接続
$dsn = 'mysql:dbname=sampledb;hoat=localhost';
$user = 'root';
$password='';
$dbh = new PDO($dsn,$user,$password);
$dbh->query('SET NAMES utf8');
// ~SQLの指令を記載~ //
//切断
$dbh = null;
?>
上記のコードをXAMPP:7.2.8の環境で実行してみましたが、うまく動作しなかったので
下記のコードに改良してみました。
PHP7.2.8でMySQL接続できたコード
//PHP7.2.8.ver
<?php
//DB接続定義
$db_user ="root";
$db_pass ="";
$db_host ="localhost";
$db_name ="phptest";
$db_type ="mysql";
//DSN組み立て
$dsn = "$db_type:host=$db_host;dbname=$db_name;charset=utf8";
//DB接続
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 '接続に成功しました';
}catch(PDOException $Exception){
die('接続に失敗しました');
}
// ~SQLの指令を記載~ //
//DB切断
$pdo =null;
?>
上記のように書き換えたらうまくMySQLの連携がうまくいきました。
今回突発的にPHP7をいじってみましたが、MySQL連携の構文とか
前のバージョンでは動いていた構文が新バージョンでは動かない
こともあるというのは大いに勉強になりました。もちろん、やりようによっては
動かせることもあると思いますが、PHP触って5日の人間には現状ここまでの考察が限界でした。