【PHP】MySQLにレコードを挿入する

公開日:
更新日:
カテゴリー: PHP

PHPからMySQLにアクセスし、任意のレコード(データ)をデータベース(テーブル)に挿入する方法を説明します。

環境

まず環境として、「sample」というデータベースを作成し、そこに「test」というテーブルを作ります。

「test」テーブルには「id」「name」「memo」というフィールドがあります。

データベースの作成方法はデータベースの作成・削除・選択を、テーブルの作成方法はテーブルの作成方法を参照して下さい(共にphpMyAdminからSQLクエリを実行して作成します)。

PHPからMySQLにデータを挿入

PHPからMySQLへ接続・操作する方法はいくつかありますが、今回は汎用性が高く高速なPDO(PHP Data Objects)クラスを使います。

PDOクラスを使ってMySQLにデータを挿入する場合は、「PDOオブジェクトの作成」→「SQLの準備」→「SQLの発行」という流れをとります。

PDOオブジェクトの作成

オブジェクトの作成は以下のようにします

//PDOオブジェクトの作成
$pdo = new PDO("mysql:host=MySQLサーバのホスト名;dbname=データベース名;charset=utf8;", "データベース接続のID", "データベース接続のパスワード");

「MySQLサーバのホスト名」は、エックスサーバの場合「mysql○○○.xserver.jp」のようになります(「"mysql○○○.xserver.jp"」のようにクォーテーションはいらない)。

「データベース名」は作成したデータベース名を入力します。これもクォーテーションは要りません。

同様にデータベース接続のID(データベースのユーザ名)とパスワードを入力します。

SQLの準備

prepareメソッドでSQL文の準備を行います。発行はまだしません。

//SQLの準備
$st = $pdo->prepare("INSERT INTO テーブル名 VALUES(?, ?, ?,・・・)");

「テーブル名」は作成したテーブル名を記入します。

「?」はフィールドに挿入するデータですが、データは後ほど設定するため、『仮のデータ』です(プレースホルダといいます)。

SQLの発行

//SQLの発行
$st->execute(array("データ1", "データ2", "データ3", ・・・));

executeメソッドでSQL文を発行します。MySQLに挿入するデータは配列形式で格納します。

「データ1」は先ほど準備した「?」の一番最初に該当し、「データ2」は二番目の「?」、「データ3」は三番目の「?」に該当します。

サンプルプログラム

以上を踏まえて、「sample」データベースにある「test」テーブルに「id」は「001」、「name」は「佐藤」、「memo」は「男性」となるようにデータを挿入したいと思います。

<?php
//PDOオブジェクトの作成
$pdo = new PDO("mysql:host=MySQLサーバのホスト名;dbname=データベース名;charset=utf8;", "データベース接続のID", "データベース接続のパスワード");
//SQLの準備
$st = $pdo->prepare("INSERT INTO テーブル名 VALUES(?, ?, ?)");
//SQLの発行
$st->execute(array("001", "佐藤", "男性"));
?>

なお、PDOでMySQLに接続する際には、【PHP】PDOでMySQLに接続する際、必ず例外処理(try,catch)を行うにあるように例外処理を行うようにしてください。

 

あわせて読んでほしい!

 

コメント

まだコメントはありません。

コメントフォーム
お名前
コメント