「PDO接続フェッチ利用」の編集履歴(バックアップ)一覧はこちら
「PDO接続フェッチ利用」(2008/11/02 (日) 07:07:09) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
<h3>PDO接続フェッチ利用</h3>
<ul><li>フェッチとは、取得した結果セットからデータを取り出すことをいう</li>
<li>PDO関数で用意されたフェッチメソッドは3種類</li>
</ul><p><br /><font size="4" color="#000080" style="background-color:rgb(255,204,153);">PDO関数フェッチメソッド<br /></font></p>
<table width="500" cellspacing="1" cellpadding="1" border="0"><tbody><tr><td style="background-color:rgb(192,192,192);">メソッド</td>
<td style="background-color:rgb(192,192,192);">概要</td>
</tr><tr><td>fetch()</td>
<td>結果セットから次の行を取得</td>
</tr><tr><td>fetchAll()</td>
<td>結果セットからすべての行を含むデータ取得</td>
</tr><tr><td>fetchColumn()</td>
<td>結果セットの最初のフィールドからデータを取得</td>
</tr></tbody></table><p><font size="4" color="#000080" style="background-color:rgb(255,204,153);">フェッチモード</font></p>
<table width="550" cellspacing="1" cellpadding="1" border="0"><tbody><tr><td style="background-color:rgb(192,192,192);">定数</td>
<td style="background-color:rgb(192,192,192);">概要</td>
<td style="background-color:rgb(192,192,192);">コード例</td>
</tr><tr><td>PDO::FETCH_NUM</td>
<td>一般配列</td>
<td>$row[0]</td>
</tr><tr><td>PDO::FETCH_ASSOC</td>
<td>連想配列</td>
<td>$row['name']</td>
</tr><tr><td>PDO::FETCH_OBJ</td>
<td>オブジェクト</td>
<td>$row->name</td>
</tr><tr><td>PDO::FETCH_BOTH</td>
<td>通常/連想配列(デフォルト)</td>
<td>$row[0] / $row['id']</td>
</tr><tr><td>PDO::FETCH_BOUND</td>
<td>個別にバインド</td>
<td>$name</td>
</tr><tr><td>PDO::FETCH_CLASS</td>
<td>指定クラス</td>
<td>$row->name</td>
</tr><tr><td>PDO::FETCH_INTO</td>
<td>指定インスタンスに対す</td>
<td>$row->name</td>
</tr></tbody></table><p> </p>
<p><font size="4" color="#000080" style="background-color:rgb(255,204,153);">結果セットの取得</font></p>
<table width="641" cellspacing="1" cellpadding="1" border="0"><tbody><tr style="background-color:rgb(204,255,204);"><td>result.php</td>
</tr><tr><td><?php<br />
$dsn = 'mysql:dbname=testDB;host:localhost'; <font color="#339966">//testDBは任意</font><br />
$user = 'root'; <font color="#339966">//DB接続ユーザ名</font><br />
$password = ''; <font color="#339966">//DB接続用パスワード</font><br /><br />
try{<br />
$db = new PDO($dsn, $user, $password);<br />
$rs = $db->query('SELECT * FROM member ORDER BY id ASC');<br />
print('<table border="1">');<br />
print('<tr><th>name</th><th>address</th><th>tel</th><th>mail</th></tr>');<br /><br />
while ($row = $rs->fetch(PDO::FETCH_ASSOC)) {<br />
?><br />
<tr><br />
<td><?php print($row['name']); ?></td><br />
<td><?php print($row['address']); ?></td><br />
<td><?php print($row['tel']); ?></td><br />
<td><?php print($row['mail']); ?></td><br />
</tr><br />
<?php<br />
}<br />
print('</talbe>');<br />
} catch (PDOException $e){<br />
print('エラー発生 : ' . $e->getMessage());<br />
}<br /><br />
?></td>
</tr></tbody></table><p> </p>
<p><font size="4" color="#000080" style="background-color:rgb(255,204,153);">fetchAllの使用例</font></p>
<table width="641" cellspacing="1" cellpadding="1" border="0"><tbody><tr style="background-color:rgb(204,255,204);"><td>fetchAll.php</td>
</tr><tr><td><?php<br />
$dsn = 'mysql:dbname=testDB;host:localhost'; <font color="#339966">//testDBは任意</font><br />
$user = 'root'; <font color="#339966">//DB接続ユーザ名</font><br />
$password = ''; <font color="#339966">//DB接続用パスワード</font><br /><br />
try{<br />
$db = new PDO($dsn, $user, $password);<br />
$rs = $db->query('SELECT * FROM member ORDER BY id ASC');<br />
$data = $rs->fetchAll();<br />
print('<ul>');<br />
foreatch ($data as $value) {<br />
print('<li>');<br />
print($value['name'] . ' : ' . $value['address'] . ' : ' .
$value['tel']);<br />
print('</li>');<br />
}<br />
print('</ul>');<br />
} catch (PDOException $e){<br />
print('エラー発生 : ' . $e->getMessage());<br />
}<br /><br />
?></td>
</tr></tbody></table><p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p><font size="4" color="#000080" style="background-color:rgb(255,204,153);">getAttribute / s</font><br /><br />
</p>
<hr width="100%" size="2" /><hr width="100%" size="2" /><p> </p>
<p> </p>
<h3>PDO接続フェッチ利用</h3>
<ul><li>フェッチとは、取得した結果セットからデータを取り出すことをいう</li>
<li>PDO関数で用意されたフェッチメソッドは3種類</li>
</ul><p><br /><font size="4" color="#000080" style="background-color:rgb(255,204,153);">PDO関数フェッチメソッド<br /></font></p>
<table width="500" cellspacing="1" cellpadding="1" border="0"><tbody><tr><td style="background-color:rgb(192,192,192);">メソッド</td>
<td style="background-color:rgb(192,192,192);">概要</td>
</tr><tr><td>fetch()</td>
<td>結果セットから次の行を取得</td>
</tr><tr><td>fetchAll()</td>
<td>結果セットからすべての行を含むデータ取得</td>
</tr><tr><td>fetchColumn()</td>
<td>結果セットの最初のフィールドからデータを取得</td>
</tr></tbody></table><p><font size="4" color="#000080" style="background-color:rgb(255,204,153);">フェッチモード</font></p>
<table width="550" cellspacing="1" cellpadding="1" border="0"><tbody><tr><td style="background-color:rgb(192,192,192);">定数</td>
<td style="background-color:rgb(192,192,192);">概要</td>
<td style="background-color:rgb(192,192,192);">コード例</td>
</tr><tr><td>PDO::FETCH_NUM</td>
<td>一般配列</td>
<td>$row[0]</td>
</tr><tr><td>PDO::FETCH_ASSOC</td>
<td>連想配列</td>
<td>$row['name']</td>
</tr><tr><td>PDO::FETCH_OBJ</td>
<td>オブジェクト</td>
<td>$row->name</td>
</tr><tr><td>PDO::FETCH_BOTH</td>
<td>通常/連想配列(デフォルト)</td>
<td>$row[0] / $row['id']</td>
</tr><tr><td>PDO::FETCH_BOUND</td>
<td>個別にバインド</td>
<td>$name</td>
</tr><tr><td>PDO::FETCH_CLASS</td>
<td>指定クラス</td>
<td>$row->name</td>
</tr><tr><td>PDO::FETCH_INTO</td>
<td>指定インスタンスに対す</td>
<td>$row->name</td>
</tr></tbody></table><p> </p>
<p><font size="4" color="#000080" style="background-color:rgb(255,204,153);">結果セットの取得</font></p>
<table width="641" cellspacing="1" cellpadding="1" border="0"><tbody><tr style="background-color:rgb(204,255,204);"><td>result.php</td>
</tr><tr><td><?php<br />
$dsn = 'mysql:dbname=testDB;host:localhost'; <font color="#339966">//testDBは任意</font><br />
$user = 'root'; <font color="#339966">//DB接続ユーザ名</font><br />
$password = ''; <font color="#339966">//DB接続用パスワード</font><br /><br />
try{<br />
$db = new PDO($dsn, $user, $password);<br />
$rs = $db->query('SELECT * FROM member ORDER BY id ASC');<br />
print('<table border="1">');<br />
print('<tr><th>name</th><th>address</th><th>tel</th><th>mail</th></tr>');<br /><br />
while ($row = $rs->fetch(PDO::FETCH_ASSOC)) {<br />
?><br />
<tr><br />
<td><?php print($row['name']); ?></td><br />
<td><?php print($row['address']); ?></td><br />
<td><?php print($row['tel']); ?></td><br />
<td><?php print($row['mail']); ?></td><br />
</tr><br />
<?php<br />
}<br />
print('</talbe>');<br />
} catch (PDOException $e){<br />
print('エラー発生 : ' . $e->getMessage());<br />
}<br /><br />
?></td>
</tr></tbody></table><p> </p>
<p><font size="4" color="#000080" style="background-color:rgb(255,204,153);">fetchAllの使用例</font></p>
<table width="641" cellspacing="1" cellpadding="1" border="0"><tbody><tr style="background-color:rgb(204,255,204);"><td>fetchAll.php</td>
</tr><tr><td><?php<br />
$dsn = 'mysql:dbname=testDB;host:localhost'; <font color="#339966">//testDBは任意</font><br />
$user = 'root'; <font color="#339966">//DB接続ユーザ名</font><br />
$password = ''; <font color="#339966">//DB接続用パスワード</font><br /><br />
try{<br />
$db = new PDO($dsn, $user, $password);<br />
$rs = $db->query('SELECT * FROM member ORDER BY id ASC');<br />
$data = $rs->fetchAll();<br />
print('<ul>');<br />
foreatch ($data as $value) {<br />
print('<li>');<br />
print($value['name'] . ' : ' . $value['address'] . ' : ' .
$value['tel']);<br />
print('</li>');<br />
}<br />
print('</ul>');<br />
} catch (PDOException $e){<br />
print('エラー発生 : ' . $e->getMessage());<br />
}<br /><br />
?></td>
</tr></tbody></table><p> </p>
<p> </p>
<p><font size="4" color="#000080" style="background-color:rgb(255,204,153);">トランザクション処理</font></p>
<p>
◆トランザクション処理とは、関連する複数の処理をグループ化したもので、例えば、フォーム上で入力された値を、複数のテーブルに任意の値をインサート処理したりする場合に使用します。<br />
◆例えば、1つめのデータ処理に成功し、2つめのデータ処理が失敗した場合にデータの不整合が起きます。その場合には、1つめのデータ処理結果も無効にします</p>
<table width="641" cellspacing="1" cellpadding="1" border="0"><tbody><tr style="background-color:rgb(204,255,204);"><td>transaction.php</td>
</tr><tr><td>
<p><?php<br />
$dsn = 'mysql:dbname=testDB;host:localhost'; <font color="#339966">//testDBは任意</font><br />
$user = 'root'; <font color="#339966">//DB接続ユーザ名</font><br />
$password = ''; <font color="#339966">//DB接続用パスワード</font><br /><br />
try{<br />
$db = new PDO($dsn, $user, $password);<br />
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);<br />
<font color="#000080">$db->exec('BEGIN'); </font><br />
$db->exec('INSERT INTO member(name) VALUES('名前だよ')');<br />
$db->exec('INSERT INTO member(name) VALUES('誰だよ')');<br />
<font color="#000080">$db->exec('COMMIT');</font><br />
print('登録に成功');<br />
} catch (PDOException $e){<br />
<font color="#000080">$db->exec('ROLLBACK');</font><br />
print('エラー発生 : ' . $e->getMessage());<br />
}<br /><br />
?></p>
</td>
</tr></tbody></table><p> </p>
<p>◆PDOには専用のトランザクション処理用関数があるので、それを使用するのも良いでしょう</p>
<table width="460" cellspacing="1" cellpadding="1" border="0"><tbody><tr><td style="background-color:rgb(192,192,192);">上記で使用している例</td>
<td style="background-color:rgb(192,192,192);">専用関数例</td>
</tr><tr><td><font color="#000080">$db->exec('BEGIN');<br /></font></td>
<td>$db->beginTransaction();</td>
</tr><tr><td><font color="#000080">$db->exec('COMMIT');</font></td>
<td>$db->commit();</td>
</tr><tr><td><font color="#000080">$db->exec('ROLLBACK');</font></td>
<td>$db->roolback();</td>
</tr></tbody></table><p> </p>
<p> </p>
<hr width="100%" size="2" /><hr width="100%" size="2" /><p> </p>
<p> </p>
表示オプション
横に並べて表示:
変化行の前後のみ表示: