自作PHP派が既に時代遅れのPEAR::DBを試用で使ってみたので基本コード紹介|接続・取得・追加・更新・削除

2018-10-03
PHPのキャリアは10年くらいで、フレームワークは一切使用せず、独自PHPで作成をする派です。
誰よりもあらゆるポータルサイトを早く作る自信があり、開発コストもかなり下げられる我が誇りの技術。

かなりの大掛かりで複数人での開発ならフレームワークを覚える必要があるのだろうが、
基本一人で全てこなす案件しかしないので、覚える必要がない。個人的にはスピード第一。
データベース周りは「mysqli派」です。というのも大抵のレンタルサーバーはmysqlだから他のを使う機会がありませんでした。

そんな私が、重い腰をあげてPEARライブラリのPEAR::DBを試してみた。
DBの基本である、接続・取得・追加・更新・削除は以下の通り。無事に動作しました。

読み込みがパスを一切書かず、ファイル名だけで使えるのことにすこし驚きました。
おそらく環境変数というものが通っているからかなと。
※xamppとさくらインターネットでは下記コードでちゃんと動作しました。

<?php
//PEARの読み込み
require_once("DB.php");

//DBアカウント
$dsn = array(
    'phptype' => 'mysqli',
    'hostspec' => 'localhost',
    'username' => 'user',
    'password' => 'pass',
    'database' => 'db_name'
);

//接続
$db = DB::connect($dsn);
$db->query('SET NAMES utf8');


//取得
$res =& $db->query("SELECT * FROM `table_name`");
while($row =& $res->fetchRow(DB_FETCHMODE_OBJECT)){
echo $row->shop.'<br>';
}

//追加
$sql = "insert into `table_name` (`id`,`user`,`pass`) VALUES (null,'test','test')";
$res =& $db->query($sql);

//更新
$sql = "update `table_name` set `pass` = 'passchange' WHERE id = 1";
$res =& $db->query($sql);

//削除
$sql = "delete from `table_name` where id = 1";
$res =& $db->query($sql);

//DB切断
$db->disconnect();
?>

「insert_id()」の代用がPEARにはないようです。最後に登録したデータのIDを取得する機能。この機能は個人的によく使っていたので残念です。

例えば新規登録の際、画像の登録があった場合にIDをファイル名にしていたからです。
アップした画像を連番にするのはいいことではないので、ハッシュ値にしなさいということですかね。
うん、よし次回から画像ファイル名はmd5でハッシュ値を生成するとしよう。

あと、PEARのことを色々調べて気になったのは、PEAR::DBは人気がありませんね。調べていても「PDO」の方が圧倒的に多く検索にかかります。
PHP5.1以降に標準で利用できるようになったので、PDOのほうが人気があるのは当然ですね。

ということでPEAR::DBは勉強する必要性がないと感じました。
カテゴリ: PHP