最終更新日:
公開日:
レシピ
データベース PostgreSQL
PostgreSQLデータベースへデータを新規登録(INSERT)
PostgreSQLデータベースのテーブルへ新しくデータを登録する方法について、「PostgreSQL関数」と「PDO」の2パターンを解説します。
この記事のポイント
- PostgreSQL関数を使ってテーブルにデータを登録する
- PDOを使ってテーブルにデータを登録する
目次
テーブルへデータを新規登録
今回はテーブルへ新しいデータを登録していきます。
ここでは「カフェのメニュー」を題材にして、次のようなテーブルがあることを想定して進めていきます。
カラム名 | 型 | その他 |
---|---|---|
id | INT(11) | 主キー |
name | VARCHAR(20) | |
price | INT(11) | |
modify_datetime | DATETIME | |
create_datetime | DATETIME |
「id」はデータを管理するための一意となるID、「name」と「price」はメニュー名と価格、そして最後の2つはデータ更新日と登録日を示します。
データの登録方法について、「PostgreSQL関数」と「PDO」の2通りの方法を確認していきます。
PostgreSQL関数でデータを新規登録
PostgreSQL関数を使ってデータを登録するときには、SQL文を使って登録する方法と、配列を使ってデータを登録する方法があります。
SQL文を使って登録する
まずはSQL文を使って登録する方法から解説します。
こちらの方法を使うメリットは、他のデータベースと共通のSQL文をそのまま使える点です。
MySQLやSQLiteなどの他データベースと同じコードが使えるので、SQLに馴染みがあればこちらの方法がオススメ。
また、後述する「PDO」においても全く同じSQL文を使用します。
それでは早速、コードを見ていきましょう。
コード例
<?php
// 変数の初期化
$res = null;
$pg_conn = null;
$sql = null;
$date = null;
// タイムゾーンの初期化と日付の取得
date_default_timezone_set('Asia/Tokyo');
$date = date("Y-m-d");
// データベースと接続
$pg_conn = pg_connect("host=localhost port=5432 dbname=test user=testuser password= testtest");
if( $pg_conn ) {
// データを登録するためのSQLを作成
$sql = "INSERT INTO menu (
id, name, price, modify_datetime, create_datetime
) VALUES (
1, 'ドリップコーヒー', 400, '$date', '$date'
)";
// SQLクエリ実行
$res = pg_query( $pg_conn, $sql);
var_dump($res);
} else {
var_dump("接続できませんでした");
}
// データベースの接続を切断
pg_close($pg_conn);
実行結果
成功した場合は次のように出力され、失敗した場合はfalseが出力されます。
実際に登録されたデータの内容を確認してみます。
WindowsのPowerShellやコマンドプロンプト(Macではターミナル)を起動し、PostgreSQLの「psql データベース名」コマンドを実行します。
赤い部分が入力するコードです。
コマンドの入力例
# psql test
データベースのコマンド入力モードに移ったら、次のSELECT文を打ち込んで実行してください。
コマンドの入力例
test=# SELECT * FROM menu;
データの登録が成功した場合は、次のように表示されます。
きちんと「ドリップコーヒー」のデータが登録されていることが確認できました。
解説
PostgreSQLデータベースへの接続する部分までは、別記事「PostgreSQLデータベースへ接続」と同じ内容です。
肝心な「// データを登録するためのSQLを作成」以降に続くSQL文をする部分では、実際に登録するデータを含めたSQL文を記述します。
データ登録を行うにはINSERT文
を使いますが、その基本ルールは次の形です。
このSQL文を$sqlに格納し、pg_query関数で実行しています。
その結果が$resに格納され、最後にvar_dump関数で出力するという流れになっています。
pg_query関数についてより詳しくは、php.netの下記ページをご覧ください。
pg_query関数 – php.net
pg_insert関数を使って登録する
PostgreSQL関数を使ってデータ登録するもう1つの方法は、pg_insert関数を使う方法です。
コード例
<?php
// 変数の初期化
$res = null;
$pg_conn = null;
$sql = null;
$date = null;
// タイムゾーンの初期化と日付の取得
date_default_timezone_set('Asia/Tokyo');
$date = date("Y-m-d");
// データベースと接続
$pg_conn = pg_connect("host=localhost port=5432 dbname=test user=testuser password= testtest");
if( $pg_conn ) {
$data = array(
'id' => 2,
'name' => 'カフェ・オレ',
'price' => 480,
'modify_datetime' => $date,
'create_datetime' => $date
);
// データを登録
$res = pg_insert( $pg_conn, 'menu', $data);
} else {
var_dump("接続できませんでした");
}
// データベースの接続を切断
pg_close($pg_conn);
実行結果
pg_insert関数の返り値は、先述したpg_query関数と同じです。
成功した場合は次のように出力され、失敗した場合はfalseが出力されます。
ここでも、実際に登録されたデータの内容を確認しておきましょう。
「カフェ・オレ」のデータが登録されていることが確認できました。
解説
pg_insert関数は3つの必須パラメータがあります。
1つ目は「データベースとの接続オブジェクト」、2つ目はデータを登録する「テーブル名」、3つ目は登録するデータが入った配列です。
3つ目の配列は、テーブル構造のカラム名(フィールド名)と値がセットになった連想配列になります。
先のコードだと、例えば「name」には「カフェ・オレ」が入り、「price」には「480」が登録されるように配列を宣言しています。
pg_insert関数についてより詳しくは、php.netの下記ページをご覧ください。
pg_insert関数 – php.net
PDOでデータを新規登録
PDOでデータを登録する場合は、データ登録のSQL文を作成して、queryメソッドで実行して行います。
PDOオブジェクトのインスタンス作成、データベースへの接続については別記事「PostgreSQLデータベースへ接続」で解説している内容と同じコードです。
早速コードをみていきましょう。
コード例
<?php
// 変数の初期化
$res = null;
$pdo_conn = null;
$sql = null;
$date = null;
// 現在の日付を取得
date_default_timezone_set('Asia/Tokyo');
$date = date("Y-m-d");
try {
// データベースと接続
$pdo_conn = new PDO( 'pgsql:host=localhost; dbname=test;', 'testuser', 'testtest' );
// データを登録するためのSQLを作成
$sql = "INSERT INTO menu (
id, name, price, modify_datetime, create_datetime
) VALUES (
3, 'ソイラテ', 400, '$date', '$date'
)";
// SQLクエリ実行
$res = $pdo_conn->query( $sql);
var_dump($res);
} catch(PDOException $e) {
var_dump($e->getMessage());
}
// データベースの接続を切断
$pdo_conn = null;
実行結果
成功した場合は次のように実行したSQL文が出力され、失敗した場合はfalseが出力されます。
解説
「// データを登録するためのSQLを作成」以降の、SQL文を作成するところが重要になります。
SQL文自体は、汎用性の高いデータ登録を行うためのINSERT文です。
そのため、MySQLなど他のデータベースを使った経験のある方にはお馴染みかもしれません。
もちろん、このSQL文はPostgreSQLに関わらず、その他のデータベースでも使うことが可能です。
登録されたデータを確認しておきましょう。
コマンドの入力例
# psql test
データベースのコマンド入力モードに移ったら、次のSELECT文を入力して実行します。
コマンドの入力例
test=# SELECT * FROM menu;
データ登録が成功している場合は、次のようにデータが表示されます。
こちらの記事は役に立ちましたか?
コメントありがとうございます!
運営の参考にさせていただきます。
ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。