Der zentrale Einstiegspunkt in die X DevAPI ist die Funktion mysql_xdevapi\getSession(), die einen URI zu einem MySQL 8.0 Server benötigt und ein mysql_xdevap\Session-Objekt zurückgibt.
Beispiel #1 Verbindung zu einem MySQL-Server aufbauen
<?php
try {
$session = mysql_xdevapi\getSession("mysqlx://user:password@host");
} catch(Exception $e) {
die("Die Verbindung konnte nicht hergestellt werden: " . $e->getMessage());
}
// ... $session verwenden
?>
Die Session bietet einen vollständigen Zugriff auf die API. Bei einer neuen MySQL-Installation muss zunächst ein Datenbankschema mit einer Sammlung zum Speichern der Daten erstellt werden:
Beispiel #2 Erstellen eines Schemas und einer Sammlung auf dem MySQL-Server
<?php
$schema = $session->createSchema("test");
$collection = $schema->createCollection("example");
?>
Beim Speichern von Daten wird üblicherweise die Funktion json_encode() verwendet, um die Daten in JSON zu kodieren, die dann in einer Sammlung gespeichert werden können.
Im folgenden Beispiel werden Daten in der zuvor erstellten Sammlung gespeichert und Teile davon wieder abgerufen.
Beispiel #3 Speichern und Abrufen von Daten
<?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());
?>
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
array(4) { ["_id"]=> string(28) "00005ad66aaf0000000000000003" ["age"]=> int(39) ["job"]=> string(7) "Manager" ["name"]=> string(4) "Mike" }
Das folgende Beispiel zeigt, dass der MySQL-Server ein zusätzliches Feld
namens _id
hinzufügt, das als Primärschlüssel für das Dokument
dient.
Das Beispiel zeigt auch, dass die abgerufenen Daten alphabetisch sortiert sind. Diese spezifische Reihenfolge ergibt sich aus der effizienten Binärspeicherung im MySQL-Server, aber man sollte sich nicht darauf verlassen. Einzelheiten dazu sind in der MySQL-Dokumentation zum Datentyp JSON zu finden.
Optional können die PHP-Iteratoren verwendet werden, um mehrere Dokumente abzurufen:
Beispiel #4 Abrufen und Durchlaufen mehrerer Dokumente
<?php
$result = $collection->find()->execute();
foreach ($result as $doc) {
echo "{$doc["name"]} is a {$doc["job"]}.\n";
}
?>
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
Marco is a Programmer. Mike is a Manager.