■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)
没有评论:
发表评论