我正在尝试使用 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 您可以避免这两个问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top