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でレコード登録・更新時、整数フィールドも値は文字列('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時間」で日本時間に補正する必要があります。
日本時間(JST)とは9時間の時差があるため、
「NOW()+9時間」で日本時間に補正する必要があります。
演算子の優先順位・括弧の使い方
AND/ORを複数組み合わせる場合は括弧でグルーピングしないと意図しない結果になることがあります。【正】(@department = 'sales' OR @department = 'development') AND @age >= '30' 【誤】@department = 'sales' OR @department = 'development' AND @age >= '30'
条件式の長さ制限
高度な条件設定やAPIのwhereパラメータには、条件式の長さ制限があります。- アプリ利用画面の詳細検索:3000bytesまで
- その他の機能:4096bytesまで
AUTH_RECORD関数の使い方(認証エリア連携)
認証エリアDBのフィールド値と比較する場合はAUTH_RECORD('fieldName')
を使います。
@class = AUTH_RECORD('class')
まとめ
SPIRAL APIやPHPでのDB操作では、where条件の書き方・データ型・関数利用に注意することで「なぜか動かない」を防げます。
サポートサイトの公式記法や仕様をよく確認し、現場でよくある落とし穴を回避しましょう。