• 検索結果がありません。

(PDO_INFORMIX) MySQL 関数

(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

# 49

IBM iとの連携:概要

PHPからIBM i に接続

プログラムの実行 システム資源の参照

CL RPG

関連したドキュメント