PHPプログラミング

最終更新日:
公開日:

レシピ

データベース PostgreSQL

PostgreSQLにデータを新規登録する:INSERT

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

この記事のポイント

  • PostgreSQLのデータ登録はPostgreSQL関数を使う方法と、PDOを使う方法がある

目次

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

今回はテーブルへ新しいデータを登録していきます。
PostgreSQLのデータベースに新しくデータを登録する方法は、以下の3つが用意されています。

  • pg_query関数にSQL文を渡して登録する
  • pg_insert関数に登録するデータを配列で渡して登録する
  • PDOにSQL文を渡して登録する方法

ここでは解説用に「カフェのメニュー」を題材にして、次のようなテーブルがあることを想定して進めていきます。

テーブル名:menu
カラム名その他
idINT(11)主キー
nameVARCHAR(20)
priceINT(11)
modify_datetimeDATETIME
create_datetimeDATETIME

id」はデータを管理するための一意となるID、「name」と「price」はメニュー名と価格、そして最後の2つはデータ更新日と登録日を示します。

データの登録方法について、「PostgreSQL関数」と「PDO」の2通りの方法を確認していきます。

pg_query関数にSQL文を渡してデータを登録する

まずはpg_query関数を使ってデータを登録する方法から解説していきます。
それでは早速コードを見ていきましょう。

コード例

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

実行結果

resource(3, pgsql result)

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

コマンドの入力例

# psql test

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

コマンドの入力例

test=# SELECT * FROM menu;

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

登録したデータが表示される
登録したデータが表示される

出力された内容から「ドリップコーヒー」のデータが登録されていることが確認できました。

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

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

INSERT文の基本文法
INSERT文の基本文法

このSQL文を$sqlに格納し、pg_query関数で実行しています。
その結果が$resに格納され、最後にvar_dump関数で出力するという流れになっています。

pg_query関数についてより詳しくはphp.netの下記ページをご覧ください。
pg_query関数 – php.net

pg_insert関数に配列を渡してデータを登録する

PostgreSQL関数を使ってデータ登録するもう1つの方法は、pg_insert関数に登録するデータを配列で渡して新しくデータを登録する方法です。

コード例

<?php
// (1)変数の初期化
$res = null;
$pg_conn = null;
$sql = null;
$date = null;

// (2)タイムゾーンの初期化と日付の取得
date_default_timezone_set('Asia/Tokyo');
$date = date("Y-m-d");

// (3)データベースと接続
$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
	);

	// (4)データを登録
	$res = pg_insert( $pg_conn, 'menu', $data);

} else {
	var_dump("接続できませんでした");
}

// (5)データベースの接続を切断
pg_close($pg_conn);

pg_insert関数の返り値は、先述したpg_query関数と同様です。
成功した場合は次のように出力され、失敗した場合はfalseが出力されます。

実行結果

resource(3, pgsql result)

今回もコマンドを使って登録されたデータの内容を確認してみると、以下のように登録したデータが出力されます。

登録したデータを表示
登録したデータを表示

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

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
// (1)変数の初期化
$res = null;
$pdo_conn = null;
$sql = null;
$date = null;

// (2)現在の日付を取得
date_default_timezone_set('Asia/Tokyo');
$date = date("Y-m-d");

try {
	// (3)データベースと接続
	$pdo_conn = new PDO( 'pgsql:host=localhost; dbname=test;', 'testuser', 'testtest' );	

	// (4)データを登録するためのSQLを作成
	$sql = "INSERT INTO menu (
	id, name, price, modify_datetime, create_datetime
) VALUES (
	3, 'ソイラテ', 400, '$date', '$date'	
)";

	// (5)SQLクエリ実行
	$res = $pdo_conn->query( $sql);
	var_dump($res);

} catch(PDOException $e) {

	var_dump($e->getMessage());
}

// (6)データベースの接続を切断
$pdo_conn = null;

成功した場合は次のように実行したSQL文が出力され、失敗した場合はfalseが出力されます。

var_dump関数の出力結果
var_dump関数の出力結果

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

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

コマンドの入力例

# psql test

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

コマンドの入力例

test=# SELECT * FROM menu;

以下のように、新しくデータ登録したデータを含めたテーブルの内容が表示されます。

出力されたテーブル一覧
出力されたテーブル一覧

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

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

コメントありがとうございます!
運営の参考にさせていただきます。