Signatur
Beschreibung
odbc_free_result gibt die mit einem ODBC-Ergebnissatz verbundenen Ressourcen explizit frei. Dies ist nützlich, wenn innerhalb eines Skripts viele Abfragen ausgeführt werden und der Speicherverbrauch kontrolliert werden soll, ohne das Ende des Skripts abzuwarten.
Normalerweise werden alle Ressourcen automatisch am Ende eines PHP-Skripts freigegeben. Der explizite Aufruf von odbc_free_result empfiehlt sich jedoch, wenn ein Skript lange läuft oder große Ergebnismengen verarbeitet werden und der Speicher zeitnah wieder verfügbar sein soll.
Nach dem Aufruf dieser Funktion ist das übergebene $result-Handle ungültig und darf nicht mehr verwendet werden. Der Datenbankverbindungs-Handle selbst bleibt davon unberührt und kann weiterhin für neue Abfragen genutzt werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $result Pflicht | resource | Das ODBC-Ergebnissatz-Handle, das zuvor durch einen Aufruf wie odbc_exec oder odbc_execute erzeugt wurde. |
Rückgabewert
true bei Erfolg zurück. Gibt false zurück, wenn das übergebene Handle ungültig ist oder die Ressourcen nicht freigegeben werden konnten.Beispiele
Ergebnis nach Verarbeitung explizit freigeben
<?php
$conn = odbc_connect('MeinDSN', 'benutzer', 'passwort');
if (!$conn) {
die('Verbindung fehlgeschlagen: ' . odbc_errormsg());
}
$result = odbc_exec($conn, 'SELECT id, name FROM kunden');
if ($result) {
while ($row = odbc_fetch_array($result)) {
echo $row['id'] . ': ' . $row['name'] . PHP_EOL;
}
// Ergebnissatz nach Verarbeitung freigeben
odbc_free_result($result);
}
odbc_close($conn);
Mehrere Abfragen mit Speicherfreigabe zwischen den Abfragen
<?php
$conn = odbc_connect('MeinDSN', 'benutzer', 'passwort');
if (!$conn) {
die('Verbindung fehlgeschlagen: ' . odbc_errormsg());
}
$tabellen = ['bestellungen', 'produkte', 'kunden'];
foreach ($tabellen as $tabelle) {
$sql = 'SELECT COUNT(*) AS anzahl FROM ' . $tabelle;
$result = odbc_exec($conn, $sql);
if ($result) {
$row = odbc_fetch_array($result);
echo "Tabelle '$tabelle': " . $row['anzahl'] . " Einträge" . PHP_EOL;
// Ressource sofort freigeben, um Speicher für die nächste Abfrage zu sparen
odbc_free_result($result);
}
}
odbc_close($conn);
// Wichtig · Fallstricke
Achtung: Nach dem Aufruf von odbc_free_result darf das Handle $result nicht mehr verwendet werden, da es ungültig ist. Jeder weitere Zugriff darauf führt zu einem PHP-Fehler oder unerwartetem Verhalten.
In den meisten PHP-Skripten ist ein expliziter Aufruf nicht zwingend notwendig, da PHP die Ressourcen am Skriptende automatisch bereinigt. Bei lang laufenden Prozessen (z. B. CLI-Skripte, Daemon-Prozesse) oder bei der Verarbeitung sehr großer Datenmengen ist odbc_free_result jedoch ein wichtiges Werkzeug zur Vermeidung von Speicherproblemen.