カラム | タイプ | 内容 |
---|---|---|
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><<ここまで
ブラウザでのスクリプト実行イメージ