PHP 8.0.0 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 add a note

User Contributed Notes

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