開発情報・ナレッジ

投稿者: SPIRERS ナレッジ向上チーム 2025年2月27日 (木)

内部呼び出しAPI「データベース(レコード)」を使用した疎通確認サンプルプログラム

この記事では、「データの登録→取得→更新→削除」のAPIの疎通確認ができるサンプルプログラムです。
初めてPHPを利用してAPIでデータを操作する方は参考にしてください。

はじめに

内部呼び出し(スパイラル内部で動作させる場合)を利用した疎通確認の方法です。
この方法では、APIトークンおよびAPIシークレットを記述することなく簡易にAPIを実行できます。
アカウント内APIの設定を「ON」に変更する必要があるため、事前に アカウント内APIをご確認ください。

PHPは、カスタムプログラムの即時実行を利用して動作・疎通確認をします。
カスタムプログラムでの即時実行については、 カスタムプログラムでのPHP利用をご参照ください。

疎通確認用のDB作成

APIの疎通確認を行うためDBを作成します。
DBの作成方法に関しては 通常DBをご参照ください。

▼疎通確認DB-基本設定
DB名 タイトル タイプ レコード数
疎通確認DB apiTest 通常DB 10

▼疎通確認DB-構成設定
フィールド フィールド名 差替えキーワード 属性
テキストフィールド(32 bytes) 名前 name 入力必須
重複不可
セレクト セレクト select 属性なし
セレクト項目
1:ラベル1
2:ラベル2
3:ラベル3
メールアドレス(大・小文字無視) メールアドレス mail 属性なし

データの登録

「疎通確認DB」に下記の内容を登録するAPIを実行します。

▼登録するデータ
名前 セレクト メールアドレス
スパイラル太郎 ラベル1 test001@example.com
PHP データ登録
<?php
//APIコミュニケーターのセット
$api_communicator = $SPIRAL->getSpiralApiCommunicator();

// =======================
// API/insert 1件
// =======================

// リクエストパラメータのセット
$request = new SpiralApiRequest();

// DBの指定
$request->put("db_title", "apiTest");

// 登録するデータの指定
$request->put("data", [
  ["name"=>"name","value"=>"スパイラル太郎"],
  ["name"=>"mail","value"=>"test001@example.com"],
  ["name"=>"select","value"=>"1"]
]);

// APIリクエスト
$response = $api_communicator->request("database", "insert", $request);

// レスポンスコード取得
$code = $response->get("code");
// メッセージ取得
$message = $response->get("message");

// エラーハンドリング
if ($code != "0") { // 応答コードが0以外の場合
  echo ("エラーが発生しました。(code:" . $code . " message:" . $message . ")\n");
} else { // 応答コードが0の場合
  echo ("正常終了。(code:" . $code . ")\n");
  print_r($response);
}
?>
APIリファレンス
データ登録 実行結果
データ登録後のレコード

データの取得

「疎通確認DB」より、レコードを取得します。
※ 今回は検索条件を指定していないため全件取得となります。
PHP データ取得
<?php
//APIコミュニケーターのセット
$api_communicator = $SPIRAL->getSpiralApiCommunicator();

// =======================
// API/select
// =======================

// リクエストパラメータ
$request = new SpiralApiRequest();

// DBの指定
$request->put("db_title", "apiTest");

// 取得するフィールドタイトルの指定
$request->put("select_columns",["name","mail","select"]);

// APIリクエスト
$response = $api_communicator->request("database", "select", $request);

// レスポンスコード取得
$code = $response->get("code");
// メッセージ取得
$message = $response->get("message");

// エラーハンドリング
if ($code != "0") { // 応答コードが0以外の場合
  echo ("エラーが発生しました。(code:" . $code . " message:" . $message . ")\n");
} else { // 応答コードが0の場合
  echo ("正常終了。(code:" . $code . ")\n");
  print_r($response);
}
?>
APIリファレンス
データ取得 実行結果
補足1
取得するフィールドの種類は、「select_columns」で定めています。
取得するフィールドの種類
// 取得するフィールドタイトルの指定
$request->put("select_columns",["フィールドタイトル","フィールドタイトル","フィールドタイトル"]);
補足2
取得するデータは、「抽出ルール」「検索条件」を指定して絞り込むことができます
抽出ルールでの絞り込み
$request->put("select_name","抽出ルール");
検索条件での絞り込み
$request->put("search_condition",[
  ["name"=>"フィールドタイトル","value"=>"検索する値"],
  ["name"=>"フィールドタイトル","value"=>"検索する値"],
  ["name"=>"フィールドタイトル","value"=>"検索する値"]
]);

データの更新

「疎通確認DB」に下記の内容を更新するAPIを実行します。
※ 今回は更新対象の条件を指定していないため全件更新となります。

▼更新するデータ
名前 セレクト メールアドレス
すぱいらる次郎 ラベル2 update001@example.com
PHP データ更新
<?php
//APIコミュニケーターのセット
$api_communicator = $SPIRAL->getSpiralApiCommunicator();

// =======================
// API/update
// =======================

// リクエストパラメータのセット
$request = new SpiralApiRequest();

// DBの指定
$request->put("db_title", "apiTest");

// 更新するデータの指定
$request->put("data", [
  ["name"=>"name","value"=>"すぱいらる次郎"],
  ["name"=>"select","value"=>"2"],
  ["name"=>"mail","value"=>"update001@example.com"]
]);

// APIリクエスト
$response = $api_communicator->request("database", "update", $request);

// レスポンスコード取得
$code = $response->get("code");
// メッセージ取得
$message = $response->get("message");

// エラーハンドリング
if ($code != "0") { // 応答コードが0以外の場合
  echo ("エラーが発生しました。(code:" . $code . " message:" . $message . ")\n");
} else { // 応答コードが0の場合
  //更新した数を取得
  $count = $response->get("count");
    if($count == "0"){
      echo("エラー:更新できる値がありません\n");
    }else{
      echo ("正常終了。(code:" . $code . ")\n");
      print_r($response);
    }
}
?>
APIリファレンス
データ更新 実行結果
データ更新後のレコード
補足
更新するデータは、「id」「抽出ルール」「検索条件」で絞り込むことができます。
idでの絞り込み
$request->put("id","更新したいレコードのid");
抽出ルールでの絞り込み
$request->put("select_name","抽出ルール");
検索条件での絞り込み
$request->put("search_condition",[
  ["name"=>"フィールドタイトル","value"=>"検索する値"],
  ["name"=>"フィールドタイトル","value"=>"検索する値"],
  ["name"=>"フィールドタイトル","value"=>"検索する値"]
]);

データの削除

「疎通確認DB」のレコードを削除するAPIを実行します。
※ 今回は削除対象の条件を指定していないため全件削除となります。
PHP データ削除
<?php
//APIコミュニケーターのセット
$api_communicator = $SPIRAL->getSpiralApiCommunicator();

// =======================
// API/delete
// =======================

// リクエストパラメータ
$request = new SpiralApiRequest();

// DBの指定
$request->put("db_title", "apiTest");

// APIリクエスト
$response = $api_communicator->request("database", "delete", $request);

// レスポンスコード取得
$code = $response->get("code");
// メッセージ取得
$message = $response->get("message");

// エラーハンドリング
if ($code != "0") { // 応答コードが0以外の場合
  echo ("エラーが発生しました。(code:" . $code . " message:" . $message . ")\n");
} else { // 応答コードが0の場合
  //削除した数を取得
  $count = $response->get("count");
    if($count == "0"){
      echo("エラー:削除できる値がありません\n");
    }else{
      echo ("正常終了。(code:" . $code . ")\n");
      print_r($response);
    }
}
?>
APIリファレンス
データ削除 実行結果
データ削除後のレコード
補足
削除するデータは、更新と同じく「id」「抽出ルール」「検索条件」で絞り込むことができます。

データの複数行一括登録

「疎通確認DB」に下記の内容を一括登録するAPIを実行します。

▼登録するデータ
名前 セレクト メールアドレス
スパイラル太郎 ラベル1 test001@example.com
すぱいらる次郎 ラベル2 test002@example.com
螺旋三郎 ラベル3 test003@example.com
PHP データの複数行一括登録
<?php
//APIコミュニケーターのセット
$api_communicator = $SPIRAL->getSpiralApiCommunicator();

// =======================
// API/bulk_insert
// =======================

// リクエストパラメータのセット
$request = new SpiralApiRequest();

// DBの指定
$request->put("db_title", "apiTest");

// 挿入するデータの該当フィールドタイトルの配列
$request->put("columns",["name","select","mail"]);

// 登録するデータ
// columnsで指定したフィールド数×登録行数の二次元配列
$request->put("data",[
    ["スパイラル太郎","1","test001@example.com"],
    ["すぱいらる次郎","2","test002@example.com"],
    ["螺旋三郎","3","test003@example.com"]
]);

// APIリクエスト
$response = $api_communicator->request("database", "bulk_insert", $request);

// レスポンスコード取得
$code = $response->get("code");
// メッセージ取得
$message = $response->get("message");

// エラーハンドリング
if ($code != "0") { // 応答コードが0以外の場合
    echo ("エラーが発生しました。(code:" . $code . " message:" . $message . ")\n");
  } else { // 応答コードが0の場合
    echo ("正常終了。(code:" . $code . ")\n");
    print_r($response);
  }
?>
APIリファレンス
データの複数行一括登録 実行結果
データの複数行一括登録後のレコード
補足
「columns」は挿入するデータの該当フィールドタイトルの配列です。
登録するデータである「data」の配列と各行の各列と数が一致する必要があります。
指定していないフィールドは、「NULL(空)」で登録されます。

検索条件を指定したデータの取得

「疎通確認DB」より、レコードを取得します。
今回は検索条件として、セレクト項目が「ラベル1」または「ラベル2」のデータを取得します。
PHP データ取得
<?php
//APIコミュニケーターのセット
$api_communicator = $SPIRAL->getSpiralApiCommunicator();

// =======================
// API/select
// =======================

// リクエストパラメータ
$request = new SpiralApiRequest();

// DBの指定
$request->put("db_title", "apiTest");

// 取得するフィールドタイトルの指定
$request->put("select_columns",["name","mail","select"]);

// 検索条件の指定
$request->put("search_condition",[
  ["name"=>"select","value"=>"1","logical_connection"=>"or"],
  ["name"=>"select","value"=>"2","logical_connection"=>"or"]
]);

// APIリクエスト
$response = $api_communicator->request("database", "select", $request);

// レスポンスコード取得
$code = $response->get("code");
// メッセージ取得
$message = $response->get("message");

// エラーハンドリング
if ($code != "0") { // 応答コードが0以外の場合
  echo ("エラーが発生しました。(code:" . $code . " message:" . $message . ")\n");
} else { // 応答コードが0の場合
  echo ("正常終了。(code:" . $code . ")\n");
  print_r($response);
}
?>
APIリファレンス
検索条件を指定したデータ取得 実行結果
補足
検索条件の「search_condition」で指定している「logical_connection」は
設定しない場合「and」となります。
今回は「select」の項目を二つ検索するため、「or」を指定しています。
※ 異なるフィールドの場合は「or」を指定していても、「and」と指定されます。

データの複数行一括更新

「疎通確認DB」に下記の内容を更新するAPIを実行します。
複数行更新する際は、対象をキーとなるフィールドで特定し更新をします。
※ キーとなるフィールドは入力必須かつ重複不可のフィールドのみ指定可能です。

▼更新するデータ
名前(更新対象を特定) セレクト メールアドレス
スパイラル太郎 ラベル3 update001@example.com
すぱいらる次郎 ラベル2 update002@example.com
螺旋三郎 ラベル1 update003@example.com
PHP データの複数行一括更新
<?php
//APIコミュニケーターのセット
$api_communicator = $SPIRAL->getSpiralApiCommunicator();

// =======================
// API/bulk_update
// =======================

// リクエストパラメータ
$request = new SpiralApiRequest();

// DBの指定
$request->put("db_title", "apiTest");

// 更新結果が0件の場合にエラーの動作
$request->put("on_record_not_found", "error");

// 更新対象を特定するためのフィールド、(重複不可・入力必須)
$request->put("key","name");

// 挿入するデータの該当フィールドタイトルの配列
// keyで指定したカラムも設定
$request->put("columns",["name","select","mail"]);

// 更新するデータの指定
// columnsで指定したフィールド数×更新行数の二次元配列
// キーの値は更新対象を定める
$request->put("data", [
    ["スパイラル太郎","3","update001@example.com"],
    ["すぱいらる次郎","2","update002@example.com"],
    ["螺旋三郎","1","update003@example.com"]
]);

// APIリクエスト
$response = $api_communicator->request("database", "bulk_update", $request);

// レスポンスコード取得
$code = $response->get("code");
// メッセージ取得
$message = $response->get("message");

// エラーハンドリング
if ($code != "0") { // 応答コードが0以外の場合
  echo ("エラーが発生しました。(code:" . $code . " message:" . $message . ")\n");
} else { // 応答コードが0の場合
  echo ("正常終了。(code:" . $code . ")\n");
  print_r($response);
}
?>
APIリファレンス
データの複数行一括更新 実行結果
データの複数行一括更新後のレコード
補足
更新するデータを特定するフィールドは、「key」にて定めています。
また、「key」で設定した値は「columns」に指定する必要があります。

idを指定したデータの削除

「疎通確認DB」のレコードを削除するAPIを実行します。
今回は検索条件として、id「2」を指定し削除します。
PHP idを指定したデータの削除
<?php
//APIコミュニケーターのセット
$api_communicator = $SPIRAL->getSpiralApiCommunicator();

// =======================
// API/delete
// =======================

// リクエストパラメータ
$request = new SpiralApiRequest();

// DBの指定
$request->put("db_title", "apiTest");

// idの指定
$request->put("id", "2");

// APIリクエスト
$response = $api_communicator->request("database", "delete", $request);

// レスポンスコード取得
$code = $response->get("code");
// メッセージ取得
$message = $response->get("message");

// エラーハンドリング
if ($code != "0") { // 応答コードが0以外の場合
  echo ("エラーが発生しました。(code:" . $code . " message:" . $message . ")\n");
} else { // 応答コードが0の場合
  //削除した数を取得
  $count = $response->get("count");
    if($count == "0"){
      echo("エラー:削除できる値がありません\n");
    }else{
      echo ("正常終了。(code:" . $code . ")\n");
      print_r($response);
    }
}
?>
APIリファレンス
idを指定したデータの削除 実行結果
idを指定したデータの削除後のレコード
補足
idが異なるとデータを削除できない、または削除したいデータと違うデータを削除してしまう場合があります。
削除する場合は、検索条件と削除したいデータがあっているかを確認のうえ実行してください。

最後に

不具合やほかのやり方が知りたい等あれば、下記の「コンテンツに関しての要望はこちら」からご連絡ください。
また、ページなどでPHPを利用する場合は、 スパイラルのWeb機能でのPHP利用をご参照ください。

解決しない場合はこちら コンテンツに関しての
要望はこちら