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("無法建立連線: " . $e->getMessage());
}
// ... 使用 $session
?>
該工作階段提供對 API 的完整存取權。對於新的 MySQL 伺服器安裝,第一步是使用集合建立資料庫綱要來儲存資料。
範例 #2:在 MySQL 伺服器上建立 Schema 和 Collection
<?php
$schema = $session->createSchema("test");
$collection = $schema->createCollection("example");
?>
儲存資料時,通常使用 json_encode() 函式將資料編碼成 JSON 格式,然後儲存在 Collection 中。
以下範例示範如何將資料儲存到先前建立的 Collection 中,然後再擷取部分資料。
範例 #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
的額外欄位,作為文件的 primary key (主鍵)。
此範例還說明擷取的資料會依字母順序排序。這個特定順序來自 MySQL 伺服器內部的高效二進位儲存方式,但不應依賴它。詳情請參閱 MySQL JSON 資料類型文件。
(選用)使用 PHP 的迭代器來擷取多個文件。
範例 #4:擷取和迭代多個文件
<?php
$result = $collection->find()->execute();
foreach ($result as $doc) {
echo "{$doc["name"]} 是 {$doc["job"]}。\n";
}
?>
上述範例將輸出類似以下的內容:
Marco is a Programmer. Mike is a Manager.