多数レコード取得(PHP)
最終更新日:2023年03月08日
DB検索(database/select)および一覧表(table/data)のAPIを使ってレコードを取得する際は、一度の呼び出しで、lines_per_pageパラメータで指定したレコード件数(最大1,000件)の取得が可能です。
1,000件以上取得したい場合は、1,000件ずつ1ページとしたページ指定(pageパラメータ)を使って、分割して取得してください。
抽出対象のレコード数はAPIレスポンスのcountパラメータで確認できます。
その値をlines_per_pageで割った整数+1のページ数があります。
<?php
define("APIURL", "https://xxxxxxx.smp.ne.jp/api/service");
define("TOKEN", "000737xxxxxxxxxxxxxxxxxxxxe84c0b61b7208961affbaed0f3");
define("SECRET", "582cdd06xxxxxxxxxxxxxxxxxxxxxc31882d45b");
define("LINES_PER_PAGE", 1000);
// 送信するJSONデータのパラメータを設定します
$parameters = array();
$parameters["db_title"] = "testdata";
$parameters["select_columns"] = array("name", "email", "telephone");
$parameters["lines_per_page"] = LINES_PER_PAGE;
// 最初の1ページ目を読み出し、結果を出力します。
$response = database_select($parameters);
$result = json_decode($response, true);
($result["code"] == 0) or die("An error occurred while calling database/select API.\n");
$count = $result["count"];
print_apidata($result["data"]);
// 2ページ以降が存在すれば、APIを呼び出して結果を表示します。
for ($p = 2; $p <= ceil($count / LINES_PER_PAGE); $p++) {
$parameters = array();
$parameters["db_title"] = "testdata";
$parameters["select_columns"] = array("name", "email", "telephone");
$parameters["lines_per_page"] = LINES_PER_PAGE;
$parameters["page"] = $p;
$response = database_select($parameters);
$result = json_decode($response, true);
($result["code"] == 0) or die("An error occurred while calling database/select API.\n");
print_apidata($result["data"]);
}
echo "\ncount = $count\n";
exit(0);
// database/select API 呼び出し用の関数
function database_select($param_parameters)
{
$api_headers = array(
"X-SPIRAL-API: database/select/request",
"Content-Type: application/json; charset=UTF-8"
);
$param_parameters["spiral_api_token"] = TOKEN;
$param_parameters["passkey"] = time();
$key = $param_parameters["spiral_api_token"] . "&" . $param_parameters["passkey"];
$param_parameters["signature"] = hash_hmac('sha1', $key, SECRET, false);
$json = json_encode($param_parameters);
$curl = curl_init(APIURL);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
curl_setopt($curl, CURLOPT_HTTPHEADER, $api_headers);
curl_exec($curl);
if (curl_errno($curl)) echo curl_error($curl);
$returnval = curl_multi_getcontent($curl);
curl_close($curl);
return $returnval;
}
// API呼び出しデータ出力用の関数
function print_apidata($apidata)
{
foreach ($apidata as $arecord) {
foreach ($arecord as $afield) {
echo mb_convert_encoding($afield, 'CP932', 'UTF-8') . "\t";
}
echo "\n";
}
}
?>