mysqliからPDOに記述を変えよう!接続・取得・追加・更新・削除の基本コード

2018-10-05
データベース周りは未だに「mysqli派」ですが、ようやくPDOを使ってみようと決断。

PHP5.1以降に標準で利用できるようになったようで、ライブラリの読み込みは必要がない。
基本となる、接続・取得・追加・更新・削除の一連を動作確認しました。
使い勝手は良さそうで、PEAR::DBはもう完全にオワコンであることがはっきりしました。

※xamppでは下記コードでちゃんと動作しました。

<?php
//mysqlアカウント
$DB['host'] = 'localhost';
$DB['user'] = 'user';
$DB['pass'] = 'pass';
$DB['name'] = 'db_name';

//接続
$dsn = "mysql:dbname={$DB['name']};host={$DB['host']}";
$dbh = new PDO($dsn,$DB['user'],$DB['pass']);
$dbh->query('SET NAMES utf8');


//取得(foreach文)
$sql = 'select * from `config`';
foreach ($dbh->query($sql) as $row) {
print($row['id'].'<br>');
}

//取得(while文)
$sql = 'select * from `config`';
$rst = $dbh->query($sql);
while($row = $rst->fetch(PDO::FETCH_ASSOC)){
print($row['id'].'<br>');
}

//追加
$sql = "insert into `config` (`id`,`user`,`pass`) values (null,'test','test')";
$rst = $dbh->query($sql);
echo $dbh->lastInsertId(); //INSERT直後のautoincrementのIDを取得

//更新
$sql = "update `config` set `pass` = 'passchange' WHERE id = 11";
$rst = $dbh->query($sql);

//削除
$sql = "delete from `config` where id = 11";
$rst = $dbh->query($sql);

//DB切断
$dbh = null;
?>

MySQLしか使わないのですが、データベースの種類の違いを吸収できる点が唯一のメリットですかね。
あと情報によるとPDOは、データベースの機能をフルに扱うことができなくて、細かいSQL文は非対応のものもあるとか…。
でも、データベース操作はいつも基本的なことで完結しているので大丈夫かな。

PDOはいい感じでした。
カテゴリ: PHP