After Postgres update one of our php web gallery stopped working. Uploading of a photo ended with the following error: invalid byte sequence for encoding "UTF8": 0xff
For years we have allways put an ‘E’ before escaped image data in our INSERT queries.
pg_query("INSERT INTO gallery (name, data) VALUES ('My photo', E'$escaped_image')");
I found the solution in http://php.net/manual/en/function.pg-escape-bytea.php
// Escape image data
$escaped = pg_escape_bytea($data);
// The wrong code, which stopped working after Postgres update
pg_query("INSERT INTO gallery (name, data) VALUES ('Pine trees', E'$escaped')");
// The right code
pg_query("INSERT INTO gallery (name, data) VALUES ('Pine trees', '$escaped')");