PHP の mysqli でクラウド SQL へ接続する方法

Google App Engine では開発言語として PHP も利用可能です。

はじめから、App Engine をターゲットとして開発されたアプリケーションであれば、データストアなどの専用のストレージを利用するようにプログラムが書かれているかもしれません。

しかし、伝統的な方法で PHP を用いて開発されたプログラムを、App Engine にポートする場合などは、RDBMS が利用できると便利です。

PHP のサポート、及び、クラウド SQL (すなわち MySQL) のサポートによって、そうした要望に応えることが可能です。

ここでは、PHP の MySQL インターフェイスの代表である MySQLi で、クラウド SQL に接続するサンプルコードを示します。

$db = null;

if (isset($_SERVER['SERVER_SOFTWARE'])
  && strpos($_SERVER['SERVER_SOFTWARE'],
   'Google App Engine') !== false) {

  // Connect from App Engine.
  $db = new mysqli(
    null,
    'ユーザー名',
    '',
    'スキーマ(データベース)名',
    null,
    '/cloudsql/プロジェクトID:インスタンスID'
  );
  
  if($db->connect_errno){
    die(
      json_encode(array(
        'outcome' => false,
        'message' => 'Unable to connect.')));
  }

} else {

  $db = new mysqli(
    'IP アドレス:ポート番号',
    'ユーザー名',
    'パスワード',
    'スキーマ(データベース)名'
  );
  if($db->connect_errno){
    die(
      json_encode(array(
        'outcome' => false,
        'message' => 'Unable to connect.')));
  }

}

ここでは、ローカルから接続する場合と、App Engine ネットワーク内の二つのコードがあります。そしてそれらが実行時に、サーバーの環境をチェックすることによって割り振られています。

尚、外部から接続するために IP アドレスをセットする必要があります。