開発情報・ナレッジ

投稿者: ShiningStar株式会社 2025年6月6日 (金)

APIのWHERE指定でつまずきやすいポイント集

SPIRAL ver.2のAPIやPHPでDB操作を行う際の
where条件の記述・データ型の扱い・関数利用つまずきやすいポイントをまとめました。
サポートサイト(公式ドキュメント)を参考に、
「なぜか動かない」「エラーになる」事例とその回避策を解説します。

where条件は必ず''(シングルクォート)で囲む

整数・日付・テキストすべて、値は必ず''で囲んで指定します。
@age = '10'    <!-- 数値でもクォート必須 -->
@name = '山田 太郎'
@order_date = '2024-05-01'
@email = 'mail@example.com'
    

半角スペース・記号を含む値はurlencode

where条件にスペースや記号が含まれる場合はURLエンコードが必要
@name = '山田 太郎' → @name = '山田%20太郎'
    
APIリクエスト時はクエリパラメータを必ずエンコードしましょう。

数値フィールドも文字列で送信

APIでレコード登録・更新時、整数フィールドも値は文字列('10'など)で送信しないとエラーになります。
{"age": "10"}  <!-- 数値型フィールドでもクォート必須 -->
    

日付・時刻・月日フィールドは関数で変換

日付・時刻・月日フィールドは関数で変換して指定
@order_date = DATE('2024-05-01')
@birthday = MONTH_DAY('05-01')
    

APIサーバで動作する関数の活用

NOW()DATE()INTEGER()などはwhere条件や計算式で利用可能。
@created_at >= DATE(NOW())
【注意】NOW()関数はUTC(協定世界時)で現在日時を返します。
日本時間(JST)とは9時間の時差があるため、
「NOW()+9時間」で日本時間に補正する必要があります。

演算子の優先順位・括弧の使い方

AND/ORを複数組み合わせる場合は括弧でグルーピングしないと意図しない結果になることがあります。
【正】(@department = 'sales' OR @department = 'development') AND @age >= '30'
【誤】@department = 'sales' OR @department = 'development' AND @age >= '30'
    
※ANDが優先されるため、条件式の意味が変わります。

条件式の長さ制限

高度な条件設定やAPIのwhereパラメータには、条件式の長さ制限があります。
  • アプリ利用画面の詳細検索:3000bytesまで
  • その他の機能:4096bytesまで

AUTH_RECORD関数の使い方(認証エリア連携)

認証エリアDBのフィールド値と比較する場合はAUTH_RECORD('fieldName')を使います。
@class = AUTH_RECORD('class')

まとめ

SPIRAL APIやPHPでのDB操作では、where条件の書き方・データ型・関数利用に注意することで「なぜか動かない」を防げます。
サポートサイトの公式記法や仕様をよく確認し、現場でよくある落とし穴を回避しましょう。

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