職案人

求職・歴史・仏教などについて掲載するつもりだが、自分の思いつきが多いブログだよ。適当に付き合って下さい。

PDOの利用

2017年07月25日 | PHP
データベースのPDO利用について


【開発環境】
xampp 1.8.3
PHP 5.5.9

【PDOとは】
・PDO(PHP Data Object)は、PHP 5から利用できるデータアクセス抽象化レイヤです。PDOを利用すると、高機能で共通化されたインターフェイスとPHP 5の機能をふんだんに使ったデータアクセスを実現できます。

・PEAR::DBとの違い
PEAR::DBやPEAR::MDBなどは、PHPで用意されている多くのネイティブなデータベースアクセスのための関数をPHPスクリプトでまとめ、共通のAPIを提供しています。

しかしながら、その共通のAPIを提供している部分はPHPスクリプトで書かれているため、速度面での期待はできません

【PDOを利用するには】
・PHP 5.3バージョン以上の場合
まず、先に「php.ini」ファイルの設定を行う、php.iniの「Windows Extensions」と書かれた箇所を検索して

extension=php_mysql.dll
extension=php_pgsql.dll
のセミコロン(;)を削除すると、MySQLとPostgreSQLが利用出来る様になる。

更に、データベースとしてMySQL、PostgreSQL、SQLiteの3つを利用するならば
extension=php_pdo_mysql.dll
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
のセミコロン(;)を削除しておく

以上の設定が終えたら、「php.ini」ファイルを保存した後、Apacheを再起動する。

注意、PHP 5.3バージョン以上で、extension=php_pdo.dllを追加すると、アパッチがエラー表示を出す

設定が終わったら、phpinfo()に下記のように表示される


【PDOクラスコンストラクタとDSNの記述】
1)MySQLのDSN(データ・ソース・ネーム)
mysql:dbname=db_name;host=host_name;port=port_no
例文
mysql:dbname=test;host=localhost
or
mysql:dbname=test;host=localhost:port=3306

2)pgsql:dbname=db_name;host=host_name;port=port_no;user=user_name;pass=password
例文
pgsql:dbname=test;host=localhost;port=5432
or
pgsql:dbname=test;host=localhost;port=5432;user=hoge;pass=hoge

3)SQLiteのDSN
sqlite:db_name
SQLiteでディスク上のデータベースに接続するには絶対パスでデータベースの位置を指定します。
sqlite:d:¥¥sqlite¥¥test

【データベースへの接続方法】
☆MySQLの場合
データベース「uriage」、テーブル「shouhin」、userも、passも、「testuser」とする。

1)mysql_connect()関数を利用する場合
$link = mysql_connect('localhost', 'user', 'pass');

// MySQLに対する処理

mysql_close($link);

参照サイト→「mysql_close」関数

2)PDOクラスを利用する場合
$dsn = 'mysql:dbname=uriage;host=localhost';
$user = 'testuser';
$password = 'testuser';

try{
//PDOクラスのオブジェクト作成
$dbh = new PDO($dsn, $user, $password);
}catch (PDOException $e){
print('Error:'.$e->getMessage());
die();
}
参照サイト→PDOクラス利用

「pdotest1.php」サンプル
<html>
<head><title>PDOクラス</title></head>
<body>
<?php

$dsn = 'mysql:dbname=uriage;host=localhost';
$user = 'testuser';
$password = 'testuser';

try{
$dbh = new PDO($dsn, $user, $password);

print('接続に成功しました。<br>');
  文字コードは自分の環境に合わせる
$dbh->query('SET NAMES UTF-8');
$sql = 'select * from shouhin';
foreach ($dbh->query($sql) as $row) {
print($row['id']);
print($row['name'].'<br>');
}
}catch (PDOException $e){
print('Error:'.$e->getMessage());
die();
}
$dbh = null;

?>
成功すれば表示される

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« pgAdminⅲ操作について | トップ | PDO使ってPostgreSqlに接続す... »
最新の画像もっと見る

コメントを投稿

PHP」カテゴリの最新記事