Files
php-doc-ru/reference/mysql_xdevapi/examples.xml

152 lines
4.5 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 8deee9585d9c8485493e35bcb7dde61b29c30854 Maintainer: sergey Status: ready -->
<!-- Reviewed: no -->
<chapter xml:id="mysql-xdevapi.examples" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
&reftitle.examples;
<para>
Центральная точка входа в X DevAPI — функция <function>mysql_xdevapi\getSession</function>,
которая принимает URI сервера MySQL 8.0 и возвращает
объект <classname>mysql_xdevapi\Session</classname>.
</para>
<example>
<title>Подключение к серверу MySQL</title>
<programlisting role="php">
<![CDATA[
<?php
try {
$session = mysql_xdevapi\getSession("mysqlx://user:password@host");
} catch(Exception $e) {
die("Не удалось установить соединение: " . $e->getMessage());
}
// ...используйте $session
?>
]]>
</programlisting>
</example>
<para>
Сессия даёт полный доступ к API. Первый шаг для новой установки MySQL-сервера —
создать схему базы данных с коллекцией для хранения данных:
</para>
<example>
<title>Создание схемы и коллекции на сервере MySQL</title>
<programlisting role="php">
<![CDATA[
<?php
$schema = $session->createSchema("test");
$collection = $schema->createCollection("example");
?>
]]>
</programlisting>
</example>
<para>
При сохранении данных их обычно кодируют в JSON-формат функцией <function>json_encode</function>,
который затем можно сохранить внутри коллекции.
</para>
<para>
В следующем примере данные сохраняются в коллекции, которую мы создали ранее,
а затем снова извлекаем их части.
</para>
<example>
<title>Хранение и получение данных</title>
<programlisting role="php">
<![CDATA[
<?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());
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
array(4) {
["_id"]=>
string(28) "00005ad66aaf0000000000000003"
["age"]=>
int(39)
["job"]=>
string(7) "Manager"
["name"]=>
string(4) "Mike"
}
]]>
</screen>
</example>
<para>
В примере показано, что сервер MySQL добавляет поле с именем
<code>_id</code>, которое выступает в роли первичного ключа к документу.
</para>
<para>
В примере также показано, что извлечённые данные отсортированы по алфавиту.
Этот конкретный порядок обоснован эффективным двоичным хранилищем внутри сервера MySQL, но
на него не нужно полагаться. Подробнее об этом рассказано в документации по типу данных MySQL JSON.
</para>
<para>
Если нужно, можно использовать итераторы PHP для извлечения нескольких документов:
</para>
<example>
<title>Извлечение и итерация нескольких документов</title>
<programlisting role="php">
<![CDATA[
<?php
$result = $collection->find()->execute();
foreach ($result as $doc) {
echo "{$doc["name"]} — {$doc["job"]}.\n";
}
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
Марко — программист.
Майк — менеджер.
]]>
</screen>
</example>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->