「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-&gt;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-&gt;name</td> </tr><tr><td>PDO::FETCH_INTO</td> <td>指定インスタンスに対す</td> <td>$row-&gt;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>&lt;?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-&gt;query('SELECT * FROM member ORDER BY id ASC');<br />     print('&lt;table border=&quot;1&quot;&gt;');<br />     print('&lt;tr&gt;&lt;th&gt;name&lt;/th&gt;&lt;th&gt;address&lt;/th&gt;&lt;th&gt;tel&lt;/th&gt;&lt;th&gt;mail&lt;/th&gt;&lt;/tr&gt;');<br /><br />     while ($row = $rs-&gt;fetch(PDO::FETCH_ASSOC)) {<br /> ?&gt;<br />     &lt;tr&gt;<br />         &lt;td&gt;&lt;?php print($row['name']); ?&gt;&lt;/td&gt;<br />         &lt;td&gt;&lt;?php print($row['address']); ?&gt;&lt;/td&gt;<br />         &lt;td&gt;&lt;?php print($row['tel']); ?&gt;&lt;/td&gt;<br />         &lt;td&gt;&lt;?php print($row['mail']); ?&gt;&lt;/td&gt;<br />     &lt;/tr&gt;<br /> &lt;?php<br />     }<br />     print('&lt;/talbe&gt;');<br />   } catch (PDOException $e){<br />     print('エラー発生 : ' . $e-&gt;getMessage());<br />   }<br /><br /> ?&gt;</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>&lt;?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-&gt;query('SELECT * FROM member ORDER BY id ASC');<br />     $data = $rs-&gt;fetchAll();<br />     print('&lt;ul&gt;');<br />     foreatch ($data as $value) {<br />         print('&lt;li&gt;');<br />             print($value['name'] . ' : ' . $value['address'] . ' : ' . $value['tel']);<br />         print('&lt;/li&gt;');<br />     }<br />     print('&lt;/ul&gt;');<br />   } catch (PDOException $e){<br />     print('エラー発生 : ' . $e-&gt;getMessage());<br />   }<br /><br /> ?&gt;</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-&gt;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-&gt;name</td> </tr><tr><td>PDO::FETCH_INTO</td> <td>指定インスタンスに対す</td> <td>$row-&gt;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>&lt;?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-&gt;query('SELECT * FROM member ORDER BY id ASC');<br />     print('&lt;table border=&quot;1&quot;&gt;');<br />     print('&lt;tr&gt;&lt;th&gt;name&lt;/th&gt;&lt;th&gt;address&lt;/th&gt;&lt;th&gt;tel&lt;/th&gt;&lt;th&gt;mail&lt;/th&gt;&lt;/tr&gt;');<br /><br />     while ($row = $rs-&gt;fetch(PDO::FETCH_ASSOC)) {<br /> ?&gt;<br />     &lt;tr&gt;<br />         &lt;td&gt;&lt;?php print($row['name']); ?&gt;&lt;/td&gt;<br />         &lt;td&gt;&lt;?php print($row['address']); ?&gt;&lt;/td&gt;<br />         &lt;td&gt;&lt;?php print($row['tel']); ?&gt;&lt;/td&gt;<br />         &lt;td&gt;&lt;?php print($row['mail']); ?&gt;&lt;/td&gt;<br />     &lt;/tr&gt;<br /> &lt;?php<br />     }<br />     print('&lt;/talbe&gt;');<br />   } catch (PDOException $e){<br />     print('エラー発生 : ' . $e-&gt;getMessage());<br />   }<br /><br /> ?&gt;</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>&lt;?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-&gt;query('SELECT * FROM member ORDER BY id ASC');<br />     $data = $rs-&gt;fetchAll();<br />     print('&lt;ul&gt;');<br />     foreatch ($data as $value) {<br />         print('&lt;li&gt;');<br />             print($value['name'] . ' : ' . $value['address'] . ' : ' . $value['tel']);<br />         print('&lt;/li&gt;');<br />     }<br />     print('&lt;/ul&gt;');<br />   } catch (PDOException $e){<br />     print('エラー発生 : ' . $e-&gt;getMessage());<br />   }<br /><br /> ?&gt;</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>&lt;?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-&gt;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);<br />     <font color="#000080">$db-&gt;exec('BEGIN'); </font><br />     $db-&gt;exec('INSERT INTO member(name) VALUES('名前だよ')');<br />     $db-&gt;exec('INSERT INTO member(name) VALUES('誰だよ')');<br />     <font color="#000080">$db-&gt;exec('COMMIT');</font><br />     print('登録に成功');<br />   } catch (PDOException $e){<br />     <font color="#000080">$db-&gt;exec('ROLLBACK');</font><br />     print('エラー発生 : ' . $e-&gt;getMessage());<br />   }<br /><br /> ?&gt;</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-&gt;exec('BEGIN');<br /></font></td> <td>$db-&gt;beginTransaction();</td> </tr><tr><td><font color="#000080">$db-&gt;exec('COMMIT');</font></td> <td>$db-&gt;commit();</td> </tr><tr><td><font color="#000080">$db-&gt;exec('ROLLBACK');</font></td> <td>$db-&gt;roolback();</td> </tr></tbody></table><p> </p> <p> </p> <hr width="100%" size="2" /><hr width="100%" size="2" /><p> </p> <p> </p>

表示オプション

横に並べて表示:
変化行の前後のみ表示:
記事メニュー
目安箱バナー