レシピ

データベース PostgreSQL

PostgreSQLデータベースへデータを新規登録(INSERT)

  • このエントリーをはてなブックマークに追加

PostgreSQLデータベースのテーブルへ新しくデータを登録する方法について、「PostgreSQL関数」と「PDO」の2パターンを解説します。

この記事のポイント

  • PostgreSQL関数を使ってテーブルにデータを登録する
  • PDOを使ってテーブルにデータを登録する

目次

テーブルへデータを新規登録

今回はテーブルへ新しいデータを登録していきます。
ここでは「カフェのメニュー」を題材にして、次のようなテーブルがあることを想定して進めていきます。

テーブル名:menu
カラム名 その他
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が出力されます。

var_dump関数で出力された結果

実際に登録されたデータの内容を確認してみます。
WindowsのPowerShellやコマンドプロンプト(Macではターミナル)を起動し、PostgreSQLの「psql データベース名」コマンドを実行します。
赤い部分が入力するコードです。

コマンドの入力例

# psql test

データベースのコマンド入力モードに移ったら、次のSELECT文を打ち込んで実行してください。

コマンドの入力例

test=# SELECT * FROM menu;

データの登録が成功した場合は、次のように表示されます。

出力されたデータ一覧の例

きちんと「ドリップコーヒー」のデータが登録されていることが確認できました。

解説

PostgreSQLデータベースへの接続する部分までは、別記事「PostgreSQLデータベースへ接続」と同じ内容です。

肝心な「// データを登録するためのSQLを作成」以降に続くSQL文をする部分では、実際に登録するデータを含めたSQL文を記述します。
データ登録を行うにはINSERT文
を使いますが、その基本ルールは次の形です。

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が出力されます。

var_dump関数で出力された結果

ここでも、実際に登録されたデータの内容を確認しておきましょう。

データの出力一覧

「カフェ・オレ」のデータが登録されていることが確認できました。

解説

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が出力されます。

var_dump関数で出力された結果

解説

// データを登録するためのSQLを作成」以降の、SQL文を作成するところが重要になります。
SQL文自体は、汎用性の高いデータ登録を行うためのINSERT文です。
そのため、MySQLなど他のデータベースを使った経験のある方にはお馴染みかもしれません。
もちろん、このSQL文はPostgreSQLに関わらず、その他のデータベースでも使うことが可能です。

登録されたデータを確認しておきましょう。

コマンドの入力例

# psql test

データベースのコマンド入力モードに移ったら、次のSELECT文を入力して実行します。

コマンドの入力例

test=# SELECT * FROM menu;

データ登録が成功している場合は、次のようにデータが表示されます。

コマンドで出力されたテーブル一覧

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

ありがとうございます。
コメントを送信しました。

  • このエントリーをはてなブックマークに追加
前のページへ 一覧ページへ一覧 次のページへ