SAK 図書館
PHP + MySQL 編3 - レコード更新、追加、修正、削除、mysql_affected_rows
PostgreSQL については、SQL プログラミング資料の『PostgreSQL 編』も参考に して下さい。 SQL プログラミング資料の『MySQL 編』に新しいバージョンの MySQL 資料がある。 ■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> ■PHP + MySQL 編資料
■PHP 基礎編資料
■CGI-Perl 基礎編資料
■CGI-Perl 基礎実地編資料
■CGI-Perl 応用実地編資料