LoginSignup
1
0

More than 5 years have passed since last update.

MySQL接続時のPHP7とPHP5のコーディングメモ

Last updated at Posted at 2018-08-19

初めて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日の人間には現状ここまでの考察が限界でした。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0