Start · Sprachen · PHP · Referenz · yaz_database

yaz_database

Funktion

Gibt die zu verwendenden Datenbanken innerhalb einer YAZ-Z39.50-Sitzung an.

seit PHP 4.0.1 Kategorie: misc

Signatur

yaz_database(resource $id, string $databases): bool

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

Typ
bool
Beschreibung
Gibt 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.";
}
?>
Treffer: 42

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);
}
?>
Suche in DB1 und DB2 abgesetzt. Treffer: 17

// 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.