mysqliからPDOに記述を変えよう!接続・取得・追加・更新・削除の基本コード
2018-10-05 776 1965データベース周りは未だに「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']}";
$pdo = new PDO($dsn,$DB['user'],$DB['pass']);
$pdo->query('SET NAMES utf8');
//取得(foreach文)
$sql = 'SELECT * FROM `config`';
foreach ($pdo->query($sql) as $row) {
print($row['id'].'<br>');
}
//取得(while文)
$sql = 'SELECT * FROM `config`';
$rst = $pdo->query($sql);
$total = $rst->rowCount(); //レコード件数取得
while($row = $rst->fetch(PDO::FETCH_ASSOC)){
print($row['id'].'<br>');
}
//追加
$sql = "INSERT INTO `config` (`id`,`user`,`pass`) VALUES (null,'test','test')";
$rst = $pdo->query($sql);
echo $pdo->lastInsertId(); //INSERT直後のautoincrementのIDを取得
//更新
$sql = "UPDATE `config` SET `pass` = 'passchange' WHERE `id` = 11";
$rst = $pdo->query($sql);
//削除
$sql = "DELETE FROM `config` WHERE `id` = 11";
$rst = $pdo->query($sql);
//DB切断
$pdo = null;
?>
MySQLしか使わないのですが、データベースの種類の違いを吸収できる点が唯一のメリットですかね。
あと情報によるとPDOは、データベースの機能をフルに扱うことができなくて、細かいSQL文は非対応のものもあるとか…。
でも、データベース操作はいつも基本的なことで完結しているので大丈夫かな。
PDOはいい感じでした。