例
X DevAPI の中心的なエントリポイントは、 mysql_xdevapi\getSession() 関数です。 これは MySQL 8.0 サーバへの URI を受取り、 mysql_xdevap\Session オブジェクトを返します。
例1 MySQL Serverへの接続
<?phptry { $session = mysql_xdevapi\getSession("mysqlx://user:password@host");} catch(Exception $e) { die("Connection could not be established: " . $e->getMessage());} // ... use $session?>
セッションは、API への完全なアクセスを提供します。 新しい MySQL サーバをインストールした後の最初のステップは、 データを保存するために、コレクションを使ってデータベースのスキーマを作ることです:
例2 MySQL サーバ上で、スキーマとコレクションを作る
<?php$schema = $session->createSchema("test");$collection = $schema->createCollection("example");?>
データを保存する際には、 json_encode() 関数を使い、データを JSON にエンコードします。 JSON はコレクションに保存するのに使います。
次の例は、既に述べた例で作ったコレクションにデータを保存します。 そして、その一部を再度取得します。
例3 データを保存し、取得する
<?php$marco = [ "name" => "Marco", "age" => 19, "job" => "Programmer"];$mike = [ "name" => "Mike", "age" => 39, "job" => "Manager"];$schema = $session->getSchema("test");$collection = $schema->getCollection("example");$collection->add($marco, $mike)->execute();var_dump($collection->find("name = 'Mike'")->execute()->fetchOne());?>
上の例の出力は、 たとえば以下のようになります。
array(4) { ["_id"]=> string(28) "00005ad66aaf0000000000000003" ["age"]=> int(39) ["job"]=> string(7) "Manager" ["name"]=> string(4) "Mike" }
この例では、文書へのプライマリーキーの役割を果たす
_id
という追加フィールドを MySQL サーバが追加していることを示しています。
さらにこの例は、取得したデータがアルファベット順にソートされていることも示しています。 この特定の並び順は、MySQL サーバ内の効率的なバイナリストレージから来ていますが、 それに依存すべきではありません。詳細は、MySQL の JSON データ型のドキュメントを参照してください。
オプションで、複数の文書を取得するのに、PHP のイテレータが使えます。
例4 複数の文書を取得し、それを走査する
<?php$result = $collection->find()->execute();foreach ($result as $doc) { echo "${doc["name"]} is a ${doc["job"]}.\n";}?>
上の例の出力は、 たとえば以下のようになります。
Marco is a Programmer. Mike is a Manager.