PostgreSQL-Byte-Array mit PHP in Datei schreiben

Will man Binärdaten, die in einer PostgreSQL-Tabelle als Typ bytea hinterlegt sind, direkt ausgeben oder in eine Datei schreiben, muss die Rückgabe zunächst demaskiert werden. Andernfalls wird sich euer Bildbetrachter weigern, eine gespeicherte Grafik zu öffnen. Grund dafür ist, dass die Daten bei der Auswahl mit SELECT als Oktalzahlen zurückgegeben werden, die mit einem Backslash beginnen. Die Funktion pg_unescape_bytea entfernt diese.

$result = pg_query("SELECT $rowName FROM $tableName;");
while ($row = pg_fetch_assoc($result)) {
    $fileHandler = fopen($filePath, 'wb');
    fwrite($fileHandler, pg_unescape_bytea($row[$rowName]));
    fclose($fileHandler);
}