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>
このデータフォームのブラウザ上では、次のように表示される。
2 Trackback(s)