Signatur
Beschreibung
yaz_database() legt fest, welche Datenbanken bei nachfolgenden Suchanfragen innerhalb einer aktiven YAZ-Z39.50-Sitzung verwendet werden sollen. Die Funktion gehört zur PECL-Erweiterung YAZ, die das Z39.50-Protokoll implementiert – ein Standardprotokoll für die Kommunikation mit Bibliotheksinformationssystemen und anderen Informationsservern.
Der Datenbankname wird als Zeichenkette übergeben und entspricht dem Namen, den der Zielserver für seine Datenbank vergibt. Bei Servern, die mehrere Datenbanken bereitstellen, ermöglicht diese Funktion die gezielte Auswahl der gewünschten Datenbank, bevor eine Suche mit yaz_search() oder yaz_present() ausgeführt wird.
Typischerweise wird yaz_database() nach dem Verbindungsaufbau via yaz_connect() und vor dem Absetzen einer Suchanfrage aufgerufen. Ohne explizite Datenbankauswahl verwendet der Server häufig eine Standarddatenbank, sofern dies unterstützt wird.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $id Pflicht | resource | Die Verbindungsressource, die von yaz_connect() zurückgegeben wurde. |
|
| $databases Pflicht | string | Name der Datenbank auf dem Zielserver. Mehrere Datenbanken können durch ein Pluszeichen (+) getrennt angegeben werden. |
Rückgabewert
true bei Erfolg zurück, false im Fehlerfall.Beispiele
Datenbankauswahl vor einer Z39.50-Suche
<?php
// Verbindung zu einem Z39.50-Server herstellen
$id = yaz_connect('z3950.example.com:210/Default');
if ($id) {
// Datenbank festlegen
if (yaz_database($id, 'Bibliothek')) {
// Suchanfrage vorbereiten
yaz_search($id, 'rpn', '@attr 1=4 "Programmierung"');
// Alle Anfragen asynchron ausführen
yaz_wait();
// Fehler prüfen
$error = yaz_error($id);
if ($error) {
echo "Fehler: " . $error;
} else {
$hits = yaz_hits($id);
echo "Treffer: " . $hits;
}
} else {
echo "Datenbankauswahl fehlgeschlagen.";
}
} else {
echo "Verbindung fehlgeschlagen.";
}
?>
Mehrere Datenbanken gleichzeitig auswählen
<?php
$id = yaz_connect('z3950.example.com:210');
if ($id) {
// Zwei Datenbanken mit + verknüpfen
yaz_database($id, 'DB1+DB2');
yaz_search($id, 'rpn', '@attr 1=1016 "PHP"');
yaz_wait();
echo "Suche in DB1 und DB2 abgesetzt. Treffer: " . yaz_hits($id);
}
?>
// Wichtig · Fallstricke
Hinweis zur Verfügbarkeit: Die YAZ-Erweiterung ist eine PECL-Erweiterung und seit PHP 7.0 nicht mehr im offiziellen PECL-Repository aktiv gepflegt. Sie steht in modernen PHP-Versionen möglicherweise nicht zur Verfügung. Für neue Projekte sollte geprüft werden, ob alternative Z39.50-Bibliotheken verfügbar sind.
Der Datenbankname ist server-spezifisch und muss exakt dem vom Zielserver erwarteten Namen entsprechen. Bei falschem Namen liefert die Suche in der Regel einen serverspezifischen Fehlercode zurück, der mit yaz_error() abgefragt werden kann.