トップページ > ホームページ作成 > MySQL接続
PHPを利用して、データベースのMySQLに接続し利用する方法です。MySQLの管理は、レンタルサーバーも、よくインストールされていますが、管理はphpMyAdminしか利用できないことが多いようです。技術書籍では、MySQLをコマンドラインから操作する方法は多く書かれていますが、ここではphpMyAdminを利用した方法を記載します。
MySQLにデータ登録する流れ
ここでは、レンタルサーバーのロリポップを例に説明します。次の流れで、ホームページから入力したデータをMySQLに接続し、登録するファイルを作ります。ここでは、単純に登録するだけの基本的なことのみにとどめ、データのチェックやいたずら防止対策などは、他のページにまわします。
- 入力フォームのhtmlを作る
- 確認画面用のphpを作る
- phpMyAdminで、データを保存するMySQLのテーブルを作る
- 登録確認用のphpを作る
入力フォーム
入力フォームの例をつぎのリストに示します。<form>タグで囲まれた入力データ「name」が、「送信」ボタンを押すと「actionファイル」"test_confirm.php"に引き渡されます。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>入力フォーム(サンプルリスト)</title>
</head>
<body>
<form method="post" action="test_confirm.php">
<table>
<tr>
<th>名前(全角日本字)</th><td><input type="text" name="name" /></td>
</tr>
<tr>
<th>名前(半角英字)</th><td><input type="text" name="ename" /></td>
</tr>
<tr>
<th>E-mail</th><td><input type="text" name="email" /></td>
</tr>
<tr>
<th>コメント(全角日本字)</th><td><textarea name="comment" cols="40" rows="5"></textarea></td>
</tr>
</table>
<input type="submit" value="送信" />
<input type="reset" value="リセット" />
</form>
</body>
</html>
このリストの表示サンプルは、入力フォームで確認できます。
確認画面
入力フォームからデータを受け取った後の確認画面"test_confirm.php"のサンプルリストです。よければデータ登録ボタンを押すと、データを登録するファイルに移行させます。
htmlspecialchars($_POST["name"])は、ユーザが悪意で「&」「"」「'」「<」「>」などの危険な文字を入れた場合、これらの文字をエスケープして表示するために使用しています。また、「input type="hidden"」を利用して、入力されたデータを"test_regist.php"ファイルに引き渡します。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>確認画面</title>
</head>
<body>
<table>
<tr><th>名前(全角日本字)</th><td><?php echo htmlspecialchars($_POST["name"]) ?></td></tr>
<tr><th>名前(半角英字)</th><td><?php echo htmlspecialchars($_POST["ename"]) ?></td></tr>
<tr><th>E-mail</th><td><?php echo htmlspecialchars($_POST["email"]) ?></td></tr>
<tr><th>コメント(全角日本字)</th><td><?php echo htmlspecialchars($_POST["comment"]) ?></td></tr>
</table>
<form method="post" action="test_regist.php">
<input type="hidden" name="name" value="<?php echo htmlspecialchars($_POST["name"]) ?>" />
<input type="hidden" name="ename" value="<?php echo htmlspecialchars($_POST["ename"]) ?>" />
<input type="hidden" name="email" value="<?php echo htmlspecialchars($_POST["email"]) ?>" />
<input type="hidden" name="comment" value="<?php echo htmlspecialchars($_POST["comment"]) ?>" />
<input type="submit" value="登録" />
</form>
</body>
</html>
データが間違っていた時の再入力の方法は、他のページにまわします。
phpMyAdminとテーブル作成について
phpMyAdmin だけで、 MySQL サーバを管理できます。ロリポップでは、phpMyAdmin2.6.2-rc1が使用できます。MySQLバージョンは4.0.24、PHPはver.4.3.11 です。(2007年1月15日現在)コマンドラインでは、MySQLの管理は出来ません。
phpMyAdminの日本語マニュアルは、phpMyAdmin 2.7.0-pl2 - ドキュメントでみられます。
ロリポップでは、1アカウント(1契約)につき、アカウント名と同じデータベース名の1データベースのみが利用出来き、「ユーザ専用ページ」の「WEBツール」→「データーベースの作成」からデータベースを作成します。phpMyAdminもおなじページから入ることが出来ます。
データベースを作成ができたら、テーブルを作成します。フィールドは、テーブルの項目です。とりあえず、必要な項目の数を入力してテーブルを作成します。(あとから、追加や削除ができます。)テーブルの作成方法は、データベース・テーブルの操作が参考になります。
また、次のように、必要と思うフィールド以外にも、「auto_increment」と「主キー」の設定を行った「id」フィールドを作成しておくことをお奨めします。「id」フィールドタイプは、「int」です。
フィールドタイプは色々ありますので、自分で作ったフィールドに合ったタイプを使います。
登録画面
データを受け取りMySQLに登録し、登録を確認するための"test_regist.php"のサンプルリストです。
MySQLに接続し、SQL文を作成し、クリエ(作成したSQL文)を実行し、接続を切断します。ロリポップでは、ログインIDとデータベース名は同一です。
mysql_connect("mysql**.lolipop.jp","LA********","PW*****")では、接続ホスト名、ログインID、パスワードの順に記載します。mysql_select_db ("LA********")は、データベース名を記載します。insert into db****のdb****がテーブル名になります。
「or die(mysql_error())」を記載すると、MySQLのエラーがあった場合処理を終了してエラー内容を表示できます。デバックが終わった場合は、この部分は削除するか「or die("接続エラー"))」等としておくことをお奨めします。
<?php
$con = mysql_connect("mysql**.lolipop.jp","LA********","PW*****") or die(mysql_error());
mysql_select_db ("LA********") or die(mysql_error());//接続
$sql = "insert into db****(name,ename,email,comment) values('".$_POST["name"]."','".$_POST["ename"]."','".$_POST["email"]."','".$_POST["comment"]."')";//SQL文の作成
$res = mysql_query($sql) or die(mysql_error());//クエリの実行
mysql_close($con);//切断
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>登録完了画面(サンプルリスト)</title>
<meta name="keywords" content="入力フォーム,確認画面,サンプル">
</head>
<body>
<p>
ご登録ありがとうございました。
</p>
</body>
</html>
これで、ホームページからのデータ入力→MySQLの登録が出来ました。