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)