| カラム | タイプ | 内容 |
|---|---|---|
| id | INTEGER | キー |
| name | VARCHAR(100) | 氏名(最大100バイト) |
| VARCHAR(100) | 電子メールアドレス(最大100バイト) | |
| office | VARCHAR(100) | 所属(最大100バイト) |
| memo | VARCHAR(100) | メモ(最大100バイト) |
MySQLを用いてデータベースを作成します。
まず、test_dbを作成する為に、先ほど設計したデータベースのテーブル構成を*.sqlファイルに記述します。
test_db_tbl.sql CREATE TABLE test_db ( id INTEGER NOT NULL AUTO_INCREMENT, name VARCHAR(100), mail VARCHAR(100), office VARCHAR(100), memo VARCHAR(100), primary key (id) );mysqlコマンドを用いてデータベースを作成します。
# mysqladmin -h srv create test_dbmysqlコマンドを用いて作成したデータベースに設計したデータベースのテーブル作成します。
# mysql test_db < test_db_tbl.sqlmysqlコマンドを用いて作成したデータベースを確認します。
# mysql test_db mysql test_db Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 22 to server version: 3.22.15-gamma Type 'help' for help. mysql> show tables; +-------------------+ | Tables in test_db | +-------------------+ | test_db | +-------------------+ 1 row in set (0.02 sec) mysql> show fields from test_db; +--------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------+--------------+------+-----+---------+----------------+ | id | int(11) | | PRI | 0 | auto_increment | | name | varchar(100) | YES | | NULL | | | mail | varchar(100) | YES | | NULL | | | office | varchar(100) | YES | | NULL | | | memo | varchar(100) | YES | | NULL | | +--------+--------------+------+-----+---------+----------------+ 5 rows in set (0.02 sec) mysql> exit Bye # # cd /usr/local/var # ls -F mysql/ srv.sugahome.net.err test_db/ mysqld.pid test/ # ls -F test_db test_db.ISD test_db.ISM test_db.frm #
ここでは全て許可にしています。
# mysql mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 25 to server version: 3.22.15-gamma
Type 'help' for help.
mysql> show tables;
+-----------------+
| Tables in mysql |
+-----------------+
| columns_priv |
| db |
| func |
| host |
| tables_priv |
| user |
+-----------------+
6 rows in set (0.02 sec)
mysql> insert into db
-> (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,
-> Create_priv,Drop_priv,Grant_priv,References_priv,Index_priv,Alter_priv)
-> values
-> ('%','test_db','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
Query OK, 1 row affected (0.17 sec)
mysql> exit
Bye
# mysqladmin reload
PHPでMySQLを操作する為の基本操作
HTML、PHP、SQLに関しては既に理解しているものとして詳細説明は省略します。
MySQLデータベースに接続します。
パラメータはMySQLデータベースが操作しているホスト名またはIPアドレス。
戻り値は接続識別子が返る。
$dbsel:接続識別子
$hostname:ホスト名またはIPアドレス
$password:パスワード
$dbsel = mysql_connect( $hostname )
or
$dbsel = mysql_connect( $hostname, [ $username,[ $password ]])
$dbsel:接続識別子
$database:MySQLのデータベース名
$sql_str:発行するSQL文
$result = mysql_db_query( $database, $sql_str, $dbsel )
insert into テーブル名 (Field1,Field2,Field3,..) value (値1,値2,値3,...)
select Field1,Field2,Field3,.. from テーブル名
特定のデータだけを削除するに場合は以下のようにwhere句を使用します。
delete 削除するテーブル名 where句
特定のフィールドだけを更新するに場合は以下のようにwhere句を使用します。
update テーブル名 set フィールド名 = 値 where句
*.phtml終了時に自動的に閉じられるので通常は不要。
$dbsel:接続識別子
mysql_close( $dbsel )
HTML + PHP で test_db.phtml として作成します。
一つのWebPageで「閲覧」「登録」の全機能を構成する事にします。
以下サンプルスクリプトは、文字コードをEUCに変換してご利用ください。
ここから>>
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=x-ujis">
<TITLE>TEST_DB</TITLE>
</HEAD>
<BODY>
TEST_DB
<HR>
<?
/* ホスト名 */
$hostname = "srv.sugahome.net";
/* ホストと接続 */
$dbsel = mysql_connect( $hostname);
/* FORMデータの確認 */
/* 名前、メールアドレス、種族の省略は認めない */
if( $name == "" || $mail == "" || $office == "" )
{
/* 未入力有り or ブラウザ初期接続 */
echo "未入力有り or ブラウザ初期接続です。";
}
else
{
/* データ有り --> MySQLへデータ登録 */
echo "データを登録しました。";
if( $memo == "" ){ $memo = "無し"; }
$result = mysql_db_query( "test_db",
"insert into test_db ( name, mail, office, memo ) values ( '$name','$mail','$office','$memo' )");
}
echo "<HR>";
/* 登録総数 */
$result = mysql_db_query( "test_db", "select id from test_db", $dbsel);
$allnum = mysql_numrows( $result );
echo "総数 = $allnum<P>";
/* データベースからデータの取得しTABLEで表示 */
$result = mysql_db_query( "test_db", "select name,mail,office,memo from test_db", $dbsel);
echo "<TABLE BORDER>\n";
echo "<TR><TH>氏名</TH><TH>電子メールアドレス</TH><TH>所属</TH><TH>メモ</TH></TR>\n";
for( $i=0 ; $i<$allnum ; $i++ )
{
$row = mysql_fetch_array( $result );
$namedt = $row["name"];
$maildt = $row["mail"];
$officedt = $row["office"];
$memodt = $row["memo"];
echo "<TR><TD>$namedt</TD><TD><A HREF=\"mailto:$maildt\">$maildt</A></TD><TD>$officedt</TD><TD>$memodt</TD></TR>";
}
echo "</TABLE>\n";
?>
<HR>
<FORM METHOD="POST" ACTION="test_db.phtml">
<DL>
<DT>名前<DD><INPUT TYPE="TEXT" NAME="name" SIZE=50>
<DT>電子メールアドレス<DD><INPUT TYPE="TEXT" NAME="mail" SIZE=50>
<DT>所属<DD><INPUT TYPE="TEXT" NAME="office" SIZE=50>
<DT>メモ<DD><TEXTAREA NAME="memo" ROWS=3 COLS=50></TEXTAREA>
<P>
<INPUT TYPE="submit" value="MySQL登録">
</DL>
</FORM>
<HR>
</BODY>
</HTML>
<<ここまで
ブラウザでのスクリプト実行イメージ