Php/docs/mysql-xdevapi.examples

提供:Dev Guides
< Php
移動先:案内検索

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.