■MySQL 接続 MySQL の接続は、次のようにする。尚、エラー処理は、まったく行っていないので現実的な処理ではない。 <?php /* ======================================================================== MySQL 接続テスト phpsql1.php ======================================================================== */ ?> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <TITLE>MySQL 接続テスト</TITLE> </HEAD> <BODY> <P align="center">▼ MySQL 接続テスト ▼</P> <HR> <DIV> <?php // MySQL 接続 if (!($cn = mysql_connect("localhost", "root", ""))) { die; } // MySQL DB 選択 if (!(mysql_select_db("sak"))) { die; } // MySQL 問い合わせ $sql = "select * from test order by key1"; if (!($rs = mysql_query($sql))) { die; } // MySQL レコード参照 while ($item = mysql_fetch_array($rs)) { print "${item['key1']} "; print "${item['data1']} "; print "${item['data2']} "; print "${item['data3']}<BR>"; } // MySQL 切断 mysql_close($cn); // 正常終了 print "<P>正常終了</P>"; ?> </DIV> <HR> </BODY> </HTML> ■PostgreSQL 接続 ・PostgreSQL の接続は、次のようにする。 尚、エラー処理は、まったく行っていないので現実的な処理ではない。 また、動作テストは実施していない。 <?php /* ======================================================================== PostgreSQL 接続テスト phpsql2.php ======================================================================== */ ?> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <TITLE>PostgreSQL 接続テスト</TITLE> </HEAD> <BODY> <P align="center">▼ PostgreSQL 接続テスト ▼</P> <HR> <DIV> <?php // PostgreSQL 接続 if (!($cn = pg_connect("host=sak-design port=5432 dbname=sak user=sak password=sak"))) { die; } // PostgreSQL 問い合わせ $sql = "select * from test order by key1"; if (!($rs = pg_exec($sql))) { die; } // PostgreSQL レコード参照 $ct = pg_numrows($rs); for ($i = 0; $i < $ct; $i++) { $item = pg_fetch_array($rs, $i); print "${item['key1']} "; print "${item['data1']} "; print "${item['data2']} "; print "${item['data3']}<BR>"; } // PostgreSQL 切断 pg_close($cn); // 正常終了 print "<P>正常終了</P>"; ?> </DIV> <HR> </BODY> </HTML> ■MySQL レコード追加、レコード修正、レコード削除 ・MySQL のレコード追加、修正、削除は、次のようにする。 尚、エラー処理は、まったく行っていないので現実的な処理ではない。 ・変数項目中の「'」を「\'」に、「"」を「\"」にするには、 $s = addslashes($s); のように addslashes を使用する。 ・MySQL のバージョンによっては、トランザクションがサポートされていない。 うちのバージョンでは、begin、commit でエラーにはならないものの rollback が使用できない。(^^; テーブルロックでは、マルチユーザアクセス時のレスポンスに問題がある ように思う。設計仕様でなんとかするしかないかも。 <?php /* ======================================================================== MySQL 追加、修正、削除テスト phpsql3.php ======================================================================== */ ?> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <TITLE>MySQL 追加、修正、削除テスト</TITLE> </HEAD> <BODY> <P align="center">▼ MySQL 追加、修正、削除テスト ▼</P> <HR> <DIV> <?php // MySQL 接続 if (!($cn = mysql_connect("localhost", "root", ""))) { die; } // MySQL DB 選択 if (!(mysql_select_db("sak"))) { die; } // MySQL トランザクション開始 $sql = "begin"; if (!(mysql_query($sql))) { die; } // MySQL レコード削除 $sql = "delete from test where key1 like 'z%'"; if (!(mysql_query($sql))) { die; } print '初期削除件数= ' . mysql_affected_rows() . '<BR>'; // MySQL トランザクションコミット $sql = "commit"; if (!(mysql_query($sql))) { die; } // MySQL トランザクション開始 $sql = "begin"; if (!(mysql_query($sql))) { die; } // MySQL レコード追加 $sql = "insert into test values('z001', 10, 20, 30)"; if (!(mysql_query($sql))) { die; } print '追加件数= ' . mysql_affected_rows() . '<BR>'; $sql = "insert into test values('z002', 11, 22, 33)"; if (!(mysql_query($sql))) { die; } print '追加件数= ' . mysql_affected_rows() . '<BR>'; $sql = "insert into test values('z003', 111, 222, 333)"; if (!(mysql_query($sql))) { die; } print '追加件数= ' . mysql_affected_rows() . '<BR>'; // MySQL レコード修正 $sql = "update test set data2 = 222 where key1 = 'z001'"; if (!(mysql_query($sql))) { die; } print '修正件数= ' . mysql_affected_rows() . '<BR>'; // MySQL レコード削除 $sql = "delete from test where key1 = 'z003'"; if (!(mysql_query($sql))) { die; } print '削除件数= ' . mysql_affected_rows() . '<BR>'; /* // MySQL トランザクションロールバック $sql = "rollback"; if (!(mysql_query($sql))) { die; } */ // MySQL トランザクションコミット $sql = "commit"; if (!(mysql_query($sql))) { die; } // MySQL 問い合わせ $sql = "select * from test order by key1"; if (!($rs = mysql_query($sql))) { die; } print '照会件数= ' . mysql_num_rows($rs) . '<BR>'; // MySQL レコード参照 while ($item = mysql_fetch_array($rs)) { print "${item['key1']} "; print "${item['data1']} "; print "${item['data2']} "; print "${item['data3']}<BR>"; } // MySQL 切断 mysql_close($cn); // 正常終了 print "<P>正常終了</P>"; ?> </DIV> <HR> </BODY> </HTML> ■PostgreSQL レコード追加、レコード修正、レコード削除 ・PostgreSQL のレコード追加、修正、削除は、次のようにする。 尚、エラー処理は、まったく行っていないので現実的な処理ではない。 また、動作テストは実施していない。 ・変数項目中の「'」を「\'」に、「"」を「\"」にするには、 $s = addslashes($s); のように addslashes を使用する。 <?php /* ======================================================================== PostgreSQL 追加、修正、削除テスト phpsql4.php ======================================================================== */ ?> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <TITLE>PostgreSQL 追加、修正、削除テスト</TITLE> </HEAD> <BODY> <P align="center">▼ PostgreSQL 追加、修正、削除テスト ▼</P> <HR> <DIV> <?php // PostgreSQL 接続 if (!($cn = pg_connect("host=sak-design port=5432 dbname=sak user=sak password=sak"))) { die; } // PostgreSQL トランザクション開始 $sql = "begin"; if (!(rcd = pg_exec($sql))) { die; } // PostgreSQL レコード削除 $sql = "delete from test where key1 like 'z%'"; if (!(rcd = pg_exec($sql))) { die; } print '初期削除件数= ' . pg_cmdtuples($rcd) . '<BR>'; // PostgreSQL トランザクションコミット $sql = "commit"; if (!(rcd = pg_exec($sql))) { die; } // PostgreSQL トランザクション開始 $sql = "begin"; if (!(rcd = pg_exec($sql))) { die; } // PostgreSQL レコード追加 $sql = "insert into test values('z001', 10, 20, 30)"; if (!(rcd = pg_exec($sql))) { die; } print '追加件数= ' . pg_cmdtuples($rcd) . '<BR>'; $sql = "insert into test values('z002', 11, 22, 33)"; if (!(rcd = pg_exec($sql))) { die; } print '追加件数= ' . pg_cmdtuples($rcd) . '<BR>'; $sql = "insert into test values('z003', 111, 222, 333)"; if (!(rcd = pg_exec($sql))) { die; } print '追加件数= ' . pg_cmdtuples($rcd) . '<BR>'; // PostgreSQL レコード修正 $sql = "update test set data2 = 222 where key1 = 'z001'"; if (!(rcd = pg_exec($sql))) { die; } print '修正件数= ' . pg_cmdtuples($rcd) . '<BR>'; // PostgreSQL レコード削除 $sql = "delete from test where key1 = 'z003'"; if (!(rcd = pg_exec($sql))) { die; } print '削除件数= ' . pg_cmdtuples($rcd) . '<BR>'; /* // PostgreSQL トランザクションロールバック $sql = "rollback"; if (!(rcd = pg_exec($sql))) { die; } */ // PostgreSQL トランザクションコミット $sql = "commit"; if (!(rcd = pg_exec($sql))) { die; } // PostgreSQL 問い合わせ $sql = "select * from test order by key1"; if (!($rs = pg_exec($sql))) { die; } print '照会件数= ' . pg_numrows($rs) . '<BR>'; // PostgreSQL レコード参照 $ct = pg_numrows($rs); for ($i = 0; $i < $ct; $i++) { $item = pg_fetch_array($rs, $i); print "${item['key1']} "; print "${item['data1']} "; print "${item['data2']} "; print "${item['data3']}<BR>"; } // PostgreSQL 切断 pg_close($cn); // 正常終了 print "<P>正常終了</P>"; ?> </DIV> <HR> </BODY> </HTML> ■MySQL 問い合わせ、レコード参照 ・MySQL の問い合わせ、レコード照会は、次のようにする。 尚、エラー処理は、まったく行っていないので現実的な処理ではない。 ・見出しを項目名から取得し、項目数も可変で照会表示するロジックになって いる。PHP3、PHP4 どちらでも動作する。 ・PostgreSQL でも似たようにできると思う。疲れたので、PostgreSQL 版の 問い合わせ、レコード参照はパス。(^◇^;) ・尚、単純なレコード参照方法は、MySQL、PostgreSQL 共に PHP + MySQL 編2 - RDBMS 接続、ログイン、mysql_connect、mysql_select_db に掲載してあります。 <?php /* ======================================================================== MySQL 問い合わせ、レコード参照テスト phpsql5.php ======================================================================== */ ?> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <TITLE>MySQL 問い合わせ、レコード参照テスト</TITLE> </HEAD> <BODY> <P align="center">▼ MySQL 問い合わせ、レコード参照テスト ▼</P> <HR> <DIV> <?php // MySQL 接続 if (!($cn = mysql_connect("localhost", "root", ""))) { die; } // MySQL DB 選択 if (!(mysql_select_db("sak"))) { die; } // MySQL 問い合わせ $sql = "select * from test order by key1"; if (!($rs = mysql_query($sql))) { die; } print '照会件数= ' . mysql_num_rows($rs) . '<BR>'; // MySQL レコード参照開始 $init = True; while ($item = mysql_fetch_array($rs)) { // MySQL 見出処理開始 if ($init) { // MySQL レコード項目数参照 $clct = count($item) >> 1; print "レコード項目数= $clct<BR>"; // MySQL 項目名参照 print '=================================<BR>'; print '|'; reset($item); for ($i = 0; $i < $clct; $i++) { $tmp = each($item); // 添字キー読み飛ばしダミー $tmp = each($item); list($mds, $dmy) = $tmp; print " $mds |"; } print '<BR>'; print '=================================<BR>'; // MySQL 見出処理終了 $init = False; } // MySQL 項目データ参照 print '|'; for ($i = 0; $i < $clct; $i++) { print " $item[$i] |"; } print '<BR>'; // MySQL レコード参照終了 print '=================================<BR>'; } // MySQL 切断 mysql_close($cn); // 正常終了 print "<P>正常終了</P>"; ?> </DIV> <HR> </BODY> </HTML>
2000年2月22日星期二
数据库操作
订阅:
博文评论 (Atom)
没有评论:
发表评论