PHP 8.1.28 Released!

X DevAPI の中心的なエントリポイントは、 mysql_xdevapi\getSession() 関数です。 これは MySQL 8.0 サーバーへの URI を受取り、 mysql_xdevap\Session オブジェクトを返します。

例1 MySQL Serverへの接続

<?php
try {
$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.
add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top