我有一些pdf(或txt,odt,doc)文件用于存储在Postgres DB中。 我使用这个php函数来读取文件:
$fp = fopen($name, 'rb'); $content = fread($fp, filesize($name)); $content = addslashes($content); fclose($fp);
然后尝试存储在db:
中$sql = "insert into Table(column) values ('$content'::bytea)"; $result = @pg_query($sql);
“column”是bytea类型。
当我用pdf文件执行脚本时,出现以下错误:
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".
当我使用doc文件执行脚本时,出现以下错误:
ERROR: invalid input syntax for type bytea
当我用txt文件执行脚本时,没有错误:
出了什么问题,存储文件的正确方法是什么?
答案 0 :(得分:1)
您是否尝试过使用pg_escape_string
代替addslashes
? http://www.php.net/manual/en/function.pg-escape-string.php