MySQLを学習(3):INSERT文を用いたData入力フォーム作成

July 17, 2008 – 4:07 pm

前回、「還暦から始める動的Webサイト構築:MySQLを学習(2)で、我が家の「蔵書データベース」の試作に向け、CREATE文を用いて、データベースBookDB、これに含まれるテーブルbook_tableを作成した。今回は、蔵書データの入力作業を簡便に行えるよう、Data入力フォームを作成してみた。

INSERT文: テーブルへのデータの入力には、INSERT文が用いられる。まず、INSERT文の構文で、最低限必要な部分を確認しよう。INSERTステートメントにより、既存のテーブルに新しいレコードが挿入される。このステートメントの最も単純な形は、以下のようなものになる;

    INSERT INTO tbl_name [(expression,...)] VALUES (value,...);
        

ここで、
       tbl_name :  データを挿入しようとするテーブル名
    expression :  カラム名(省略可)
    value     :  expressionの順に対応した値を与える。

 expression部が省略された場合、tbl_nameに含まれる全てのカラムの値をテーブル作成時に定義したカラムの順に与える。

前回、作成したテーブルbook_tableでは、1番目のカラムbook_idに対しキーパラメータauto_incrementを指定している。この場合、このカラムがNULLの場合、book_idの最終レコードに1を加えた値を自動的に割り当てることができる。

具体的な2冊の書籍についてデータを入力してみよう;

mysql> INSERT INTO book_table VALUES('', '脳内イメージと映像', '吉田直哉',
    ->                               '1998-10-20', '文藝春秋', 'A-1');
Query OK, 1 row affected, 1 warning (0.16 sec)
mysql> INSERT INTO book_table VALUES('', '健康食品ノート', '瀬川至朗',
    ->                               '2002-02-20', '岩波書店', 'A-4');
Query OK, 1 row affected, 1 warning (0.00 sec)
        

Data入力を確認するため、SELECTステートメントを用いてテーブルbook_table(第1,第2カラム)の内容を確認してみる;

mysql> select book_id, title from book_table;
+---------+-----------------------------+
| book_id | title                       |
+---------+-----------------------------+
|       1 | 脳内イメージと映像          |
|       2 | 健康食品ノート              |
+---------+-----------------------------+
2 rows in set (0.00 sec)
        

DATA入力用フォームの作成: SQLコマンドを用いてbook_tableにデータを挿入した。多量のデータを入力しようとすると、かなりの労力を要する。また、データの入力ミスを避ける意味でもデータの入力フォームを準備する必要がある。簡単なデータ入力用フォームを作成した。以下、phpのソースを示す;

demo.php:

<?php
$mysqli = new mysqli("localhost", "username", "password", "BookDB");
if( mysqli_connect_errno())
        die("Failed to Connect to MySQL server \n");
$mysqli->autocommit(FALSE);
$mysqli->query("SET NAMES utf8");
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
$lt;html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Data Form for BookDB</title>
</head>
<body>
<form action="<?php echo $_POST['PHP_SELF']; ?>" method="post">
<p>Test for TABLE: </p>
<p> Title: <input type="text" name="title" size="50"
       value="<?php echo htmlspecialchars($_POST['title']) ; ?>" > </p>
<p> Author: <input type="text" name="author" size="20"
       value="<?php echo htmlspecialchars($_POST['author']) ; ?>" > </p>
<p> Publishing Date: <input type="text" name="pub_date" size="20"
       value="<?php echo htmlspecialchars($_POST['pub_date']) ; ?>" > </p>
<p> Publisher: <input type="text" name="publisher" size="20"
       value="<?php echo htmlspecialchars($_POST['publisher']) ; ?>" > </p>
<p> Position: <input type="text" name="position" size="5"
       value="<?php echo htmlspecialchars($_POST['position']) ; ?>" > </p>
<p> <input type="submit" name="submit" value="Add" > </p>
    <?php          $title = $_POST['title'];
                   $author= $_POST['author'];         
                   $pub_date = $_POST['pub_date'];
                   $publisher= $_POST['publisher'];         
                   $position= $_POST['position'];
     //  INSERT文を $strに書き込む
          $str = "INSERT INTO book_table VALUES (" .  "'',"
                                                 . "'" . $title  . "',"
                                                 . "'" . $author . "',"
                                                 . "'" . $pub_date . "',"
                                                 . "'" . $publisher . "',"
                                                 . "'" . $position . "')" ;         
          if ( $title == !NULL ) {
                        echo $str . "<br></br>";
                        if( !$mysqli->query($str) )
                                 echo "query Failed" ;
 
          }
    //  後処理
          $mysqli->commit();
          $mysqli->close();
   ?>
</form>
</body>
</html>
        

このデータフォームのブラウザ上では、次のように表示される。


  1. 2 Trackback(s)

  2. Oct 1, 2008: 蔵書管理システムを作成してみた | Yama's Memorandum
  3. Jun 9, 2010: JSF(Java Server Faces)でMySQLに接続 | Yama's Memorandum

Post a Comment