(PDO_MYSQL)
Microsoft SQL Server 関 数 (PDO_SQLSRV)
Oracle 関数 (PDO_OCI) ODBC および DB2 関数
(PDO_ODBC)
PostgreSQL 関数 (PDO_PGSQL) SQLite 関数
(PDO_SQLITE)
4D 関数 (PDO_4D)
Copyright 2015 konekto, Inc
# 33
# 34
データベース PDO
PDOのクラス
PDO
RDBMSへの接続を保持するクラス
PDOStatement
SQLの実行、結果セットとして返される
PDOException
PDOStatementが投げる例外のクラス
Copyright 2015 konekto, Inc
# 35
データベース PDO
PDOの使い方
PHPスクリプトでデータベースに接続するには ま ずデータソース(DSN)を確認する必要があります DSN (Database Source Name)
データベース接続の際に必要なデータを文字列であらわし
ます
'mysql:host=localhost;dbname=test','user','pass'
DBの種類 DBホスト名 使用するDB名
ユーザ名 パスワード
Copyright 2015 konekto, Inc
# 36
データベース PDO
PDOの使い方
MySQLへの接続
DSNを引数としてPDOクラスのインスタンス を生成することでMySQLに接続することがで きます
$dbh = new PDO('mysql:host=localhost;dbname=test','user','pass');
PDOの切断
スクリプト終了と同時に自動的に切断するが、
明示的に切断したい場合は以下のようにする
$dbh = null;
Copyright 2015 konekto, Inc
# 37
データベース PDO
try {
$dbh = new PDO('mysql:host=localhost;dbname=test','user','pass');
}
$dbh = null;
} catch (PDOException $e) {
print "エラー!: " . $e->getMessage() . "<br/>";
die();
}
PDOの使い方
PHPスクリプトで接続する際には例外処理を使用 します
PDOに接続してみましょう
Copyright 2015 konekto, Inc
# 38
データベース PDO
try {
$dbh = new PDO('mysql:dbname=test;host=localhost', 'user','pass');
//エラー時に例外を投げる設定
$dbh ->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = 'INSERT INTO test VALUES(2, "tanaka")';
$stmt = $dbh->query($sql);
$dbh = null;
} catch (PDOException $e) {
print "エラー!: " . $e->getMessage() . "<br/>";
die();
}
PDOの使い方
先程作成したテーブル「test」にデータを挿入す るスクリプトを作ります
Copyright 2015 konekto, Inc
# 39
データベース PDO
PDOの使い方
SELECT文を発行して「test」テーブルに登録さ れている全てのデータを取得します
try {
$dbh = new PDO('mysql:dbname=test;host=localhost', 'user','pass');
$dbh ->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// foreach文を使って一行ずつ取得
foreach ($dbh->query('SELECT * from test') as $row) { var_dump($row);
}
$dbh = null;
} catch (PDOException $e) {
print "エラー!: " . $e->getMessage() . "<br/>";
die();
}
Copyright 2015 konekto, Inc
例題ファイル
処理内容 ファイル名
参照 select2.php
挿入 insert2.php
更新 update2.php
削除 delete2.php
Copyright 2015 konekto, Inc
# 40
select2.php
<?php
try {
$db = new PDO('sqlite:c:¥sqlite¥test');
$sql ='SELECT * FROM meibo';
$results = $db->query($sql);
foreach ($results as $row) { print $row['sno'].' ' ;
print $row['name'].' ' ; print $row['memo'].' <br>' ; }
$db=null;
} catch (Exception $e) {
print 'DBへの接続でエラーが発生しました。<br>';
print $db->errorInfo();
}
?>
Copyright 2015 konekto, Inc
# 41
insert2.php
<?php try {
$db = new PDO('sqlite:c:¥sqlite¥test');
$sql = $db->prepare("insert into meibo (sno,name,memo) values (?,?,?)");
$arg = array($sno_max + 1, "田中","メモ帳");
$sql->execute($arg);
$db=null;
} catch (Exception $e) {
print 'DBへの接続でエラーが発生しました。<br>';
print $db->errorInfo();
}
?>
Copyright 2015 konekto, Inc
# 42
update2.php
<?php try {
$db = new PDO('sqlite:c:¥sqlite¥test');
$sql = $db->prepare("update meibo set memo=? where name like ?");
$arg = array("手の甲にメモ","田中");
$sql->execute($arg);
$db=null;
} catch (Exception $e) {
print 'DBへの接続でエラーが発生しました。<br>';
print $db->errorInfo();
}
?>
Copyright 2015 konekto, Inc
# 43
delete2.php
<?php try {
$db = new PDO('sqlite:c:¥sqlite¥test');
$sql = $db->prepare("delete from meibo where name like ?");
$arg = array("田中");
$sql->execute($arg);
$db=null;
} catch (Exception $e) {
print 'DBへの接続でエラーが発生しました。<br>';
print $db->errorInfo();
}
?>
Copyright 2015 konekto, Inc
# 44
IBMi と PHP の連係
Copyright 2015 konekto, Inc
DB2/400への接続:概要
PHPからDB2/400を操作可能
db2関数
Copyright 2015 konekto, Inc
# 46
DB2/400への接続:命令(関数)
接続と切断
db2_connect db2_close
db2_pconnect db2_pclose
SQL実行
db2_exec
db2_fetch_array db2_fetch_assoc db2_fetch_both
プリペア
db2_prepare
db2_bind_param db2_execute
トランザクション
db2_commit db2_rollback
Copyright 2015 konekto, Inc
# 47
DB2/400への接続:コードサン プル
<?php
$db_con = db2_connect('', '', '');
if(!$db_con){
echo 'DB2に接続できません:', db2_conn_errormsg();
exit;
}
$query = ' SELECT * FROM ZPHPTEST.ZLOGF ORDER BY CTIME ';
$result = db2_exec($db_con, $query);
if(!$result){
echo 'SQLが実行できませんでした:', db2_stmt_errormsg();
db2_close($db_con);
exit;
}
echo '<table border=1>', '<tr><th>CTIME</th></tr>';
while($row = db2_fetch_array($result)) { echo '<tr>',
'<td>', $row[0], '</td>', '</tr>';
}
echo '</table>';
db2_close($db_con);
?>
Copyright 2015 konekto, Inc
# 48
DB2/400への接続:参考情報
Konekto技術情報ページ
http://www.konekto.jp/tech/index.php?
Old%2FZend%20Server%2FIBMi%2Fd b2func
Ustream(PHP勉強会2011年度)
:TEAM-HALh
Copyright 2015 konekto, Inc