PHPでデータベースへ入力内容を登録

トップ > PHP入門 > PHPでデータベースへ入力内容を登録

目次

広告

データ登録画面の作成

前回紹介したように、mysql_query 関数でレコードを取得するコマンドを指定すれば、登録データを表示することができます。同様に、レコードを登録するコマンドを指定すれば、データを登録することもできます。

まずは、データを入力するためのページをHTMLで作成します。今回は以下のようなHTMLページを作成します。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>アドレス登録</title>
</head>
<body>
<form action="regist.php" method="post">
  登録番号:<br />
  <input type="text" name="no" size="10" value="" /><br />
  氏名:<br />
  <input type="text" name="name" size="30" value="" /><br />
  電話番号:<br />
  <input type="text" name="tel" size="30" value=""><br />
  <br />
  <input type="submit" value="登録する" />
</form>
</body>
</html>

nonametel の名前でそれぞれ登録番号、氏名、電話番号を送信します。データの送信先は regist.php としています。(regist.php は次で作成します。)

データ登録処理の作成

データを実際に登録する処理を作成します。登録フォームから送信されたデータを受け取り、SQLを使用してデータベーに記録します。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>アドレス登録</title>
</head>
<body>
<?php

$con = mysql_connect('127.0.0.1', 'root', '1234');
if (!$con) {
  exit('データベースに接続できませんでした。');
}

$result = mysql_select_db('phpdb', $con);
if (!$result) {
  exit('データベースを選択できませんでした。');
}

$result = mysql_query('SET NAMES utf8', $con);
if (!$result) {
  exit('文字コードを指定できませんでした。');
}

$no   = $_REQUEST['no'];
$name = $_REQUEST['name'];
$tel  = $_REQUEST['tel'];

$result = mysql_query("INSERT INTO address(no, name, tel) VALUES('$no', '$name', '$tel')", $con);
if (!$result) {
  exit('データを登録できませんでした。');
}

$con = mysql_close($con);
if (!$con) {
  exit('データベースとの接続を閉じられませんでした。');
}

?>
<p>登録が完了しました。<br /><a href="index.html">戻る</a></p>
</body>
</html>

フォームからのデータは以下の部分で受け取っています。

$no   = $_REQUEST['no'];
$name = $_REQUEST['name'];
$tel  = $_REQUEST['tel'];

'"\ などが自動的にエスケープされる設定の場合はこれで大丈夫ですが、エスケープされない設定の場合、必ず以下のように変更しておいてください。

$no   = addslashes($_REQUEST['no']);
$name = addslashes($_REQUEST['name']);
$tel  = addslashes($_REQUEST['tel']);

この処理を忘れると、登録データに ' が含まれる場合、エラーになってしまいます。addslashes についてはフォームからの入力を参照してください。

受信した各データは INSERT 文でデータベースに登録しています。実際に登録処理を行っているのは以下の部分です。

$result = mysql_query("INSERT INTO address(no, name, tel) VALUES('$no', '$name', '$tel')", $con);
if (!$result) {
  exit('データを登録できませんでした。');
}

フォームから入力された登録番号、氏名、電話番号がそれぞれ登録されます。

このように、フォームから入力された値を受け取ってレコードを登録するコマンドを指定すれば、データを登録することができます。