Start · Sprachen · PHP · Referenz · ldap_count_entries

ldap_count_entries

Funktion

Gibt die Anzahl der Einträge zurück, die ein LDAP-Suchergebnis enthält.

seit PHP 4.0.0 Kategorie: misc

Signatur

ldap_count_entries(LDAP\Connection $ldap, LDAP\Result $result): int|false

Beschreibung

ldap_count_entries() zählt die Anzahl der Datensätze, die bei einer zuvor durchgeführten LDAP-Suche (z. B. mit ldap_search(), ldap_list() oder ldap_read()) gefunden wurden. Die Funktion arbeitet auf dem Ergebnis-Handle, das von diesen Suchfunktionen zurückgegeben wird.

Die Funktion ist besonders nützlich, um vor der eigentlichen Iteration über die Ergebnisse zu prüfen, ob überhaupt Einträge vorhanden sind, oder um Paginierungs- und Statistik-Logiken zu implementieren. Sie vermeidet das aufwändige Traversieren aller Einträge nur zum Zweck des Zählens.

Gibt false zurück, wenn ein Fehler aufgetreten ist, beispielsweise wenn das übergebene Result-Handle ungültig ist. Im Erfolgsfall liefert sie einen int-Wert ≥ 0 — auch wenn die Suche keine Ergebnisse lieferte (0).

Parameter

Name Typ Default Beschreibung
$ldap Pflicht LDAP\Connection Eine gültige LDAP-Verbindungsressource, die zuvor mit ldap_connect() erstellt und mit ldap_bind() authentifiziert wurde.
$result Pflicht LDAP\Result Ein LDAP-Ergebnis-Handle, wie es von ldap_search(), ldap_list() oder ldap_read() zurückgegeben wird.

Rückgabewert

Typ
int|false
Beschreibung
Gibt die Anzahl der gefundenen Einträge als nicht-negative Ganzzahl zurück. Gibt false zurück, wenn ein Fehler aufgetreten ist (z. B. ungültiges Result-Handle).

Beispiele

Prüfen ob LDAP-Benutzer gefunden wurden

<?php
$ldap = ldap_connect('ldap://ldap.example.com');
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);

if (!ldap_bind($ldap, 'cn=admin,dc=example,dc=com', 'geheim')) {
    die('LDAP-Bind fehlgeschlagen.');
}

$baseDn = 'ou=users,dc=example,dc=com';
$filter = '(objectClass=inetOrgPerson)';

$result = ldap_search($ldap, $baseDn, $filter);

$count = ldap_count_entries($ldap, $result);

if ($count === false) {
    echo 'Fehler beim Zählen der Einträge.' . PHP_EOL;
} elseif ($count === 0) {
    echo 'Keine Benutzer gefunden.' . PHP_EOL;
} else {
    echo "Gefundene Benutzer: $count" . PHP_EOL;
}

ldap_unbind($ldap);
Gefundene Benutzer: 42

Zählen von Einträgen mit eingeschränktem Scope (ldap_list)

<?php
$ldap = ldap_connect('ldap://ldap.example.com');
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_bind($ldap, 'cn=readonly,dc=example,dc=com', 'readonly-pass');

// Nur eine Ebene tief suchen (nicht rekursiv)
$result = ldap_list($ldap, 'ou=groups,dc=example,dc=com', '(objectClass=groupOfNames)');

$anzahl = ldap_count_entries($ldap, $result);
echo "Anzahl der Gruppen auf oberster Ebene: $anzahl" . PHP_EOL;

// Nur bei tatsächlichen Ergebnissen iterieren
if ($anzahl > 0) {
    $entry = ldap_first_entry($ldap, $result);
    do {
        $attrs = ldap_get_attributes($ldap, $entry);
        echo 'Gruppe: ' . $attrs['cn'][0] . PHP_EOL;
    } while ($entry = ldap_next_entry($ldap, $entry));
}

ldap_unbind($ldap);
Anzahl der Gruppen auf oberster Ebene: 5 Gruppe: admins Gruppe: developers Gruppe: support Gruppe: sales Gruppe: marketing

// Wichtig · Fallstricke

Versionsinformation: Ab PHP 8.1 sind die Parameter und Rückgabewerte auf LDAP\Connection und LDAP\Result typisiert (statt zuvor untypisierter Ressourcen). Code, der ältere Ressource-Typen erwartet, muss ggf. angepasst werden.

Fehlerbehandlung: Der Rückgabewert false sollte explizit mit === false geprüft werden, da 0 (keine Ergebnisse) ansonsten fälschlicherweise als Fehler interpretiert werden könnte.

Performance: Die Funktion ist deutlich effizienter als das manuelle Iterieren über alle Einträge mit ldap_next_entry() nur zum Zweck des Zählens, da sie intern auf die bereits vom LDAP-Server gelieferte Treffermenge zugreift.