PHPスクリプトで既存のMySQLテーブルにデータを挿入する方法
PHPで既存のMySQLテーブルにデータを挿入する方法
PHPには、既存のMySQLテーブルへデータを挿入するための関数 mysql_query() が用意されています。HTMLフォームから送信された値を受け取り、SQLのINSERT文を組み立ててこの関数に渡すことで、データベースへのレコード登録が可能になります。
注意: mysql_* 系の関数はPHP 5.5で非推奨となり、PHP 7.0以降では削除されています。現在の開発では mysqli 拡張モジュールやPDOの使用が推奨されますが、ここでは基本的な処理の流れを理解するために、従来の関数を使った例を紹介します。
サンプルコード
次の例では、「tutorials_tbl」というテーブルに対して、フォームに入力されたチュートリアルのタイトル・著者名・投稿日をINSERT文で挿入しています。
<html>
<head>
<title>MySQLデータベースに新規レコードを追加</title>
</head>
<body>
<?php
if(isset($_POST['add'])) {
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
if(! get_magic_quotes_gpc() ) {
$tutorial_title = addslashes($_POST['tutorial_title']);
$tutorial_author = addslashes($_POST['tutorial_author']);
} else {
$tutorial_title = $_POST['tutorial_title'];
$tutorial_author = $_POST['tutorial_author'];
}
$submission_date = $_POST['submission_date'];
$sql = "INSERT INTO tutorials_tbl ".
"(tutorial_title,tutorial_author, submission_date) ".
"VALUES ".
"('$tutorial_title','$tutorial_author','$submission_date')";
mysql_select_db('TUTORIALS');
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
die('Could not enter data: ' . mysql_error());
}
echo "Entered data successfully\n";
mysql_close($conn);
} else {
?>
<form method="post" action="<?php $_PHP_SELF ?>">
<table width="600" border="0" cellspacing="1" cellpadding="2">
<tr>
<td width="250">チュートリアルタイトル</td>
<td>
<input name="tutorial_title" type="text" id="tutorial_title">
</td>
</tr>
<tr>
<td width="250">チュートリアル著者</td>
<td>
<input name="tutorial_author" type="text" id="tutorial_author">
</td>
</tr>
<tr>
<td width="250">投稿日 [ yyyy-mm-dd ]</td>
<td>
<input name="submission_date" type="text" id="submission_date">
</td>
</tr>
<tr>
<td width="250"> </td>
<td> </td>
</tr>
<tr>
<td width="250"> </td>
<td>
<input name="add" type="submit" id="add" value="チュートリアルを追加">
</td>
</tr>
</table>
</form>
<?php
}
?>
</body>
</html>
コードのポイント
- データベース接続:
mysql_connect()でホスト・ユーザー名・パスワードを指定して接続し、失敗した場合はdie()でエラーメッセージを表示して処理を終了します。 - 入力値のエスケープ:
get_magic_quotes_gpc()の設定状態を確認し、必要に応じてaddslashes()で引用符をエスケープすることで、SQLの構文エラーやインジェクションのリスクを軽減しています。現代の開発ではmysqli_real_escape_string()やプリペアドステートメントの利用が推奨されます。 - INSERT文の実行:
mysql_select_db()でデータベース「TUTORIALS」を選択し、mysql_query()でSQLを実行します。実行に失敗した場合はエラー内容を表示します。 - フォームの表示: POSTリクエストで「add」が送信されていない場合には、タイトル・著者・投稿日を入力するためのHTMLフォームを表示します。
このように、PHPスクリプトから既存のMySQLテーブルへデータを挿入するには、「接続 → 入力値の加工 → SQLの実行 → 接続の切断」という一連の流れを実装します。最新のPHP環境では、同じ流れを mysqli やPDOで置き換えて実装してください。
-
PHPスクリプトでMySQLのLIKE句を使ってデータを検索・取得する方法
PHPからMySQLデータベースを操作する際、WHERE...LIKE句を使用することで、特定のパターンに一致するレコードだけを柔軟に抽出できます。PHPでは、SQLコマンドを実行するための関数mysql_query()の中で、通常のSQLと同じ構文でWHERE...LIKE句を記述します。WHERE...LIKE句をSELECTコマンドと組み合わせて使用した場合、実行結果として選択されたすべてのデータは、別のPHP関数であるmysql_fetch_array()を使って取得することができます。一方、WHERE...LIKE句をDELETEやUPDATEコマンドと一緒に使う場合は、データの取得
-
MySQLでテーブルにデータを挿入するストアドプロシージャの作成方法
MySQLでは、ストアドプロシージャを利用することで、テーブルへのデータ挿入処理を再利用可能な形でまとめることができます。本記事では、実際にテーブルを作成し、データを挿入するためのストアドプロシージャを定義して呼び出すまでの一連の手順を解説します。 1. 挿入先となるテーブルを作成する まず、データを挿入するためのテーブルを用意します。以下の例では、Id・Name・Age の3つのカラムを持つテーブル「insertDataUsingStoredProcedure」を作成しています。 mysql> create table insertDataUsingStoredProcedure