Start · Sprachen · PHP · Referenz · yaz_error

yaz_error

Funktion

Gibt die Fehlerbeschreibung des letzten Fehlers zurück, der bei einer YAZ-Verbindung aufgetreten ist.

seit PHP 4.0.1 Kategorie: misc

Signatur

yaz_error(resource $id): string

Beschreibung

yaz_error() gibt eine menschenlesbare Fehlerbeschreibung des letzten Fehlers zurück, der bei der angegebenen YAZ-Verbindung aufgetreten ist. YAZ ist eine Bibliothek zur Implementierung des Z39.50-Protokolls, das häufig in Bibliotheksinformationssystemen für die Datenbanksuche eingesetzt wird.

Die Funktion arbeitet eng mit yaz_errno() zusammen: Während yaz_errno() den numerischen Fehlercode liefert, gibt yaz_error() die dazugehörige textuelle Beschreibung zurück. Nach jeder YAZ-Operation sollte geprüft werden, ob ein Fehler aufgetreten ist, bevor mit den Ergebnissen weitergearbeitet wird.

Gibt die Funktion einen leeren String zurück, ist kein Fehler aufgetreten. Eine sinnvolle Fehlerbehandlung kombiniert typischerweise yaz_errno() und yaz_error(), um sowohl den Code als auch die Beschreibung zu protokollieren oder dem Benutzer anzuzeigen.

Parameter

Name Typ Default Beschreibung
$id Pflicht resource Die YAZ-Verbindungsressource, die zuvor mit yaz_connect() erstellt wurde.

Rückgabewert

Typ
string
Beschreibung
Gibt einen String mit der Fehlerbeschreibung des letzten Fehlers der YAZ-Verbindung zurück. Ist kein Fehler aufgetreten, wird ein leerer String zurückgegeben.

Beispiele

Fehlerbehandlung nach einer YAZ-Suche

<?php
$id = yaz_connect('z3950.example.com:210/db');
if (!$id) {
    die('Verbindung konnte nicht hergestellt werden.');
}

yaz_syntax($id, 'usmarc');
yaz_search($id, 'rpn', '@attr 1=4 "PHP"');
yaz_wait();

$errno = yaz_errno($id);
if ($errno !== 0) {
    $errmsg = yaz_error($id);
    $addinfo = yaz_addinfo($id);
    echo "Fehler $errno: $errmsg";
    if ($addinfo !== '') {
        echo " ($addinfo)";
    }
    echo PHP_EOL;
} else {
    $hits = yaz_hits($id);
    echo "Treffer gefunden: $hits" . PHP_EOL;
}
?>
Fehler 108: Unsupported Use attribute (4)

Verbindungsfehler protokollieren

<?php
function yaz_check_error(resource $conn, string $context = ''): bool {
    $errno = yaz_errno($conn);
    if ($errno !== 0) {
        $msg = yaz_error($conn);
        error_log(sprintf('[YAZ%s] Fehler %d: %s', $context ? " $context" : '', $errno, $msg));
        return true;
    }
    return false;
}

$id = yaz_connect('z3950.bibliothek.de:210/opac');
yaz_syntax($id, 'usmarc');
yaz_search($id, 'rpn', '@attr 1=1003 "Müller"');
yaz_wait();

if (yaz_check_error($id, 'Suche')) {
    echo 'Ein Fehler ist aufgetreten. Details wurden protokolliert.';
} else {
    echo 'Suche erfolgreich. Treffer: ' . yaz_hits($id);
}
?>

// Wichtig · Fallstricke

Achtung: Die YAZ-Extension (ext/yaz) ist seit PHP 7.0 nicht mehr im offiziellen PHP-Kern enthalten und muss als PECL-Paket installiert werden. Sie wird kaum noch aktiv gepflegt. Für neue Projekte sollten moderne Alternativen wie VuFind oder direkte HTTP-basierte APIs in Betracht gezogen werden.

Die Funktion liefert immer den Fehlerstatus des letzten abgeschlossenen Vorgangs. Bei asynchronem Betrieb (nach yaz_wait()) bezieht sich der Fehler auf den Stand nach dem Warten. Gleichzeitig sollte stets yaz_addinfo() geprüft werden, da diese Funktion häufig zusätzliche Diagnoseinformationen enthält.