PHP でMySQL からSage 300 のデータにアクセス

PHP から標準MySQL ライブラリを介してSage 300 に接続。

古川えりか
コンテンツスペシャリスト

最終更新日:2022-07-18

こんにちは!ドライバー周りのヘルプドキュメントを担当している古川です。

CData SQL Gateway とODBC Driver for Sage300 を使用することで、ETL を実行したりデータをキャッシュしたりすることなく、MySQL クライアントからSage 300 にアクセスできます。以下のステップに従って、PHP の標準MySQL インターフェースであるmysqliPDO_MySQL を介してSage 300 のデータにリアルタイムで接続します。

CData ODBC ドライバとは?

CData ODBC ドライバは、以下のような特徴を持ったリアルタイムデータ連携ソリューションです。

  1. Sage 300 をはじめとする、CRM、MA、会計ツールなど多様なカテゴリの270種類以上のSaaS / オンプレミスデータソースに対応
  2. 多様なアプリケーション、ツールにSage 300 のデータを連携
  3. ノーコードでの手軽な接続設定
  4. 標準 SQL での柔軟なデータ読み込み・書き込み

CData ODBC ドライバでは、1.データソースとしてSage 300 の接続を設定、2.MySQL 側でODBC Driver との接続を設定、という2つのステップだけでデータソースに接続できます。以下に具体的な設定手順を説明します。

CData ODBC ドライバのインストールとSage 300 への接続設定

まずは、本記事右側のサイドバーからSage300 ODBC Driver の無償トライアルをダウンロード・インストールしてください。30日間無償で、製品版の全機能が使用できます。

必要な接続プロパティの値が未入力の場合には、データソース名(DSN)で入力します。組み込みのMicrosoft ODBC Data Source Administrator を使用し、DSN を構成できます。ドライバーのインストールの最後にアドミニストレーターが開きます。Microsoft ODBC データソースアドミニストレーターを使ってDSN を作成および設定する方法は、ヘルプドキュメントの「はじめに」を参照してください。

Sage 300 には、Sage 300 Web API で通信するための初期設定が必要となるます。

  • Sage 300 のユーザー向けのセキュリティグループを設定します。Sage 300 のユーザーに、Security Groups の下にあるbSage 300 Web API オプションへのアクセスを付与します(各モジュール毎に必要です)。
  • /Online/Web/Online/WebApi フォルダ内のweb.config ファイルを両方編集して、AllowWebApiAccessForAdmin のキーを true 設定します。webAPI アプリプールを再起動すると設定が反映されます。
  • ユーザーアクセスを設定したら、https://server/Sage300WebApi/ をクリックして、web API へのアクセスを確認してください。

Basic 認証を使用してSage 300 へ認証します。

Basic 認証を使用して接続する

Sage 300 に認証するには、次のプロパティを入力してください。プロバイダーは、クッキーを使用してSage 300 が開いたセッションを再利用することに注意してください。 そのため、資格情報はセッションを開く最初のリクエストでのみ使用されます。その後は、Sage 300 が返すクッキーを認証に使用します。

  • Url:Sage 300 をホストするサーバーのURL に設定します。Sage 300 Web API 用のURL を次のように作成してください。 {protocol}://{host-application-path}/v{version}/{tenant}/ 例えば、 http://localhost/Sage300WebApi/v1.0/-/ です。
  • User:アカウントのユーザー名に設定します。
  • Password:アカウントのパスワードに設定します。

SQL Gateway を構成する

Sage 300 のデータへの接続を、仮想MySQL データベースとして設定する方法については、「SQL Gateway Overview」を参照してください。クライアントからのMySQL リクエストをリッスンするMySQL リモートサービスを構成します。このサービスはSQL Gateway UI で設定できます。

Creating a MySQL Remoting Service in SQL Gateway (Salesforce is shown)

PHP から接続する

以下の例は、オブジェクト指向インターフェースを使用してクエリを接続および実行する方法を示します。 以下のパラメータを使用して接続オブジェクトを初期化し、仮想MySQL データベースに接続します。

  • Host:サービスが実行されているリモートホストの場所を指定します。この例では、サービスがローカルマシンで実行されているため、"localhost" をリモートホスト設定に使用します。
  • Username:SQL Gateway の「ユーザー」タブで認証したユーザーのユーザー名を指定します。
  • Password:認証されたユーザーアカウントのパスワードを指定します。
  • Database Name:データベース名としてシステムDSN を指定します。
  • Port:サービスが実行されているポートを指定します。この例では3306 を指定します。

mysqli

<?php
$mysqli = new mysqli("localhost", "user", "password", "CData Sage300 Sys","3306");
?>

PDO

<?php
$pdo = new PDO('mysql:host=localhost;dbname=CData Sage300 Sys;port=3306', 'user', 'password');
?>

PHP からクエリする

接続が確立されると、テーブルにアクセスできます。以下のステップでは、例を説明します。

  1. テーブル(OEInvoices)をクエリします。結果は、連想配列として$result オブジェクトに保存されます。
  2. 各行とカラムを順番に処理して、値を出力してPHP ページに表示することができます。
  3. 接続を閉じます。

mysqli

$result = $mysqli->query("SELECT InvoiceUniquifier, ApprovedLimit FROM OEInvoices WHERE AllowPartialShipments = 'Yes'");
while($row = $result->fetch_assoc()) {
  foreach ($row as $k=>$v) {
    echo "$k : $v";
    echo "<br />";
  }
}
$mysqli->close();

PDO

$result = $pdo->query("SELECT InvoiceUniquifier, ApprovedLimit FROM OEInvoices WHERE AllowPartialShipments = 'Yes'");
while($row = $result->fetch(PDO::FETCH_ASSOC)) {
  foreach ($row as $k=>$v) {
    echo "$k : $v";
    echo "<br />";
  }
}
$result = null;
$pdo = null;

おわりに

このようにCData ODBC ドライバと併用することで、270を超えるSaaS、NoSQL データをコーディングなしで扱うことができます。30日の無償評価版が利用できますので、ぜひ自社で使っているクラウドサービスやNoSQL と合わせて活用してみてください。

CData ODBC ドライバは日本のユーザー向けに、UI の日本語化、ドキュメントの日本語化、日本語でのテクニカルサポートを提供しています。

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。