CascadiaPHP 2024

Примеры

Центральная точка входа в X DevAPI — функция mysql_xdevapi\getSession(), которая принимает URI сервера MySQL 8.0 и возвращает объект mysql_xdevap\Session.

Пример #1 Подключение к серверу MySQL

<?php

try {
$session = mysql_xdevapi\getSession("mysqlx://user:password@host");
} catch(
Exception $e) {
die(
"Не удалось установить соединение: " . $e->getMessage());
}

// ...используйте $session

?>

Сессия даёт полный доступ к API. Первый шаг для новой установки MySQL-сервера — создать схему базы данных с коллекцией для хранения данных:

Пример #2 Создание схемы и коллекции на сервере MySQL

<?php

$schema
= $session->createSchema("test");
$collection = $schema->createCollection("example");

?>

При сохранении данных их обычно кодируют в JSON-формат функцией json_encode(), который затем можно сохранить внутри коллекции.

В следующем примере данные сохраняются в коллекции, которую мы создали ранее, а затем снова извлекаем их части.

Пример #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"]}{$doc["job"]}.\n";
}

?>

Вывод приведённого примера будет похож на:

Марко — программист.
Майк — менеджер.
add a note

User Contributed Notes

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