SAK 図書館

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

MySQL 編4 - PHP、レコード更新、レコード参照、トランザクション

PHP + MySQL の組み合わせは、あまり私は使うことがないかなと、手を抜いて
古いバージョンの MySQL の PHP 用ドライバ関係を新しい MySQL 接続に
そのまま使用してみた。
これがなんと、トランザクションも含めて完全に正常に動くのです。
もっとも、詳細なテストをしているわけではないので、何か不都合が発生する
場合があるかもしれない。
以下のテスト程度では、またく問題なしである。

■MySQL + PHP レコード更新

  ・レコード追加で、日本語データが指定できるかテストする。
    問題なく追加できる。

<?php
/*
========================================================================
  MySQL 問い合わせ、レコード更新テスト
========================================================================
*/
?>
<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", "sak", ""))) {
    die;
  }

// MySQL DB 選択
  if (!(mysql_select_db("sak"))) {
    die;
  }

// MySQL トランザクション開始
  $sql = "begin";
  if (!(mysql_query($sql))) {
    die;
  }

// MySQL レコード追加
  $sql = "insert into testm values('日本語', 10, 20, 30)";
  if (!(mysql_query($sql))) {
    die;
  }
  print '追加件数= ' . mysql_affected_rows() . '<BR>';

// MySQL トランザクションコミット
  $sql = "commit";
  if (!(mysql_query($sql))) {
    die;
  }

// MySQL 切断
  mysql_close($cn);

// 正常終了
  print "<P>正常終了</P>";
?>
</DIV>
<HR>
</BODY>
</HTML>

■MySQL + PHP トランザクションロールバックテスト

  ・昔の MySQL はトランザクションをサポートしていなくて悲しかったが、
    最近のはトランザクションを利用する設定は面倒であるが、ちゃんと
    ロールバックすることができる。

<?php
/*
========================================================================
  MySQL 問い合わせ、ロールバックテスト
========================================================================
*/
?>
<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", "sak", ""))) {
    die;
  }

// MySQL DB 選択
  if (!(mysql_select_db("sak"))) {
    die;
  }

// MySQL トランザクション開始
  $sql = "begin";
  if (!(mysql_query($sql))) {
    die;
  }

// MySQL レコード追加
  $sql = "insert into testm values('トラン', 10, 20, 30)";
  if (!(mysql_query($sql))) {
    die;
  }
  print '追加件数= ' . mysql_affected_rows() . '<BR>';

// MySQL トランザクションロールバック
  $sql = "rollback";
  if (!(mysql_query($sql))) {
    die;
  }

// MySQL 切断
  mysql_close($cn);

// 正常終了
  print "<P>正常終了</P>";
?>
</DIV>
<HR>
</BODY>
</HTML>

■ロールバック確認

select * from testm;

+--------+---------+---------+---------+
| キー   | データ1 | データ2 | データ3 |
+--------+---------+---------+---------+
| 日本語 |      10 |      20 |      30 |
+--------+---------+---------+---------+

■MySQL + PHP レコード参照

  ・レコード参照で、日本語項目、日本語データが参照できるかテストする。
    問題なく参照できる。

<?php
/*
========================================================================
  MySQL 問い合わせ、レコード参照テスト
========================================================================
*/
?>
<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", "sak", ""))) {
    die;
  }

// MySQL DB 選択
  if (!(mysql_select_db("sak"))) {
    die;
  }

// MySQL 問い合わせ
  $sql = "select * from testm order by キー";
  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>

■その他 PHP + MySQL 操作

  ・『PHP + MySQL 編』
    ↑こちらにも PHP + MySQL の資料があります。(古いバージョンでの資料)

■MySQL 編資料
■PostgreSQL 編、JAVA Servlet、JSP 編資料
■SQL 基礎編資料
■SQL 基礎実地編資料
■SQL チューニング編資料
■Oracle PL/SQL 編資料
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索



Copyright (C) 1999-2024 Y.SAK