MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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">&nbsp;</td>
               <td>&nbsp;</td>
            </tr>
            <tr>
               <td width="250">&nbsp;</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で置き換えて実装してください。

  1. 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コマンドと一緒に使う場合は、データの取得

  2. MySQLでテーブルにデータを挿入するストアドプロシージャの作成方法

    MySQLでは、ストアドプロシージャを利用することで、テーブルへのデータ挿入処理を再利用可能な形でまとめることができます。本記事では、実際にテーブルを作成し、データを挿入するためのストアドプロシージャを定義して呼び出すまでの一連の手順を解説します。 1. 挿入先となるテーブルを作成する まず、データを挿入するためのテーブルを用意します。以下の例では、Id・Name・Age の3つのカラムを持つテーブル「insertDataUsingStoredProcedure」を作成しています。 mysql> create table insertDataUsingStoredProcedure