PHP Conference Japan 2024

示例

X DevAPI 的中心入口点是 mysql_xdevapi\getSession() 函数,它接收指向 MySQL 8.0 服务器的 URI 并返回一个 mysql_xdevapi\Session 对象。

示例 #1 连接到 MySQL 服务器

<?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,然后可以将其存储在集合中。

以下示例将数据存储到我们之前创建的集合中,然后再次检索其中的一部分。

示例 #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"
}

此示例演示了 MySQL 服务器添加了一个名为 _id 的额外字段,用作文档的主键。

此示例还演示了检索到的数据按字母顺序排序。此特定顺序来自 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.
添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top