I have little pdf (or txt, odt, doc) file to be store in Postgres DB with php.
I use this php functions to read file:
$fp = fopen($name, 'rb'); $content = fread($fp, filesize($name)); $content = addslashes($content); fclose($fp);
and then try to store in db:
$sql = "insert into Table(column) values ('$content'::bytea)";
$result = @pg_query($sql);
“column” is bytea type.
When I execute the script with pdf file, I get the follow error:
ERROR: invalid byte sequence for encoding "UTF8": 0xe2e3cf HINT: This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding".
When I execute the script with doc file, I get the follow error:
ERROR: invalid input syntax for type bytea
When I execute the script with txt file, NO error:
What’s wrong and what is the proper way to store files?
Have you tried using
pg_escape_stringinstead ofaddslashes? http://www.php.net/manual/en/function.pg-escape-string.php