PHP MYSQL文件内容转义问题
-
13-09-2019 - |
题
我正在尝试使用 php 将 .pdf 文件上传到 mysql 数据库中。
除了文件内容之外,一切都很好。无论我如何尝试转义特殊字符,查询总是失败,主要是“未知命令 ”。
我使用过addslashes、mysql_real_escape_string、removeslashes等。
有人对如何转义文件内容有任何想法吗?
非常感谢,
解决方案
我用以下序列之前,这似乎很好地工作,并且将任何数据存储到该数据库,包括图像,PDF文件,数据的阵列,等...:)
存储数据(可以是一个字符串,数组,对象,等);
首先,将数据转换base64编码的字符串
$strData = strtr(
base64_encode(
addslashes(
gzcompress( serialize($dataToStore) , 9)
)
) , '+/=', '-_,');
然后该字符串的数据存储在DB ...
检索所述数据;
从DB中提取的字符串数据
的数据进行解码回你想要的(您可能需要执行此依赖于输入数据,阵列,图像等后进行额外的步骤。)
$returnData = unserialize(
gzuncompress(
stripslashes(
base64_decode(
strtr($strDataFromDb, '-_,', '+/=')
)
)
)
);
这肯定有助于我来存储我需要的东西在MySQL数据库存储!
其他提示
我不明白为什么你想存储在数据库中的文件,但我建议你看一看的准备语句的。
猜测:可能会遇到错误,由于字符集之间的不相容性。 PDF可能是一个二进制文件,所以你需要确保数据库列设置为处理它这一点。
除了转义问题之外,如果(MySQL)系统变量,您可能会遇到“数据包太大”错误 最大允许数据包 被设置为“小”值。
使用 mysqli 扩展、准备好的语句和 mysqli_stmt::send_long_data 您可以避免这两个问题。
不隶属于 StackOverflow