我正在尝试使用 php 将 .pdf 文件上传到 mysql 数据库中。
除了文件的内容外,一切都很好。无论我如何尝试转义特殊字符,查询总是失败,主要是“未知命令\n”。
我使用过addslashes、mysql_real_escape_string、removeslashes 等。
有人对如何转义文件内容有任何想法吗?
非常感谢,
我正在尝试使用 php 将 .pdf 文件上传到 mysql 数据库中。
除了文件的内容外,一切都很好。无论我如何尝试转义特殊字符,查询总是失败,主要是“未知命令\n”。
我使用过addslashes、mysql_real_escape_string、removeslashes 等。
有人对如何转义文件内容有任何想法吗?
非常感谢,
我不明白您为什么要将文件存储在数据库中,但我建议您看一下prepared statements。
我之前使用过以下序列,它似乎工作得很好,并将任何数据存储到数据库中,包括图像、pdf、数据数组等...... :)
存储数据(可以是字符串、数组、对象等);
一、将数据转成base64编码的字符串
$strData = strtr(
base64_encode(
addslashes(
gzcompress( serialize($dataToStore) , 9)
)
) , '+/=', '-_,');
然后将该字符串数据存储在数据库中...
检索数据;
从数据库中提取字符串数据
将数据解码回您想要的(根据输入数据、数组、图像等,您可能需要在此之后执行额外的步骤)
$returnData = unserialize(
gzuncompress(
stripslashes(
base64_decode(
strtr($strDataFromDb, '-_,', '+/=')
)
)
)
);
这无疑帮助我将需要存储的内容存储在 mySQL 数据库中!
猜测:您可能会因为字符集之间的不兼容而遇到错误。PDF 可能是一个二进制文件,因此您需要确保设置了 db 列来处理它。
除了转义问题,如果(MySQL)系统变量max_allowed_packet设置为“小”值,您可能会遇到“数据包太大”错误。
使用 mysqli 扩展、prepared statements 和mysqli_stmt::send_long_data可以避免这两个问题。