2

我正在尝试使用 php 将 .pdf 文件上传到 mysql 数据库中。

除了文件的内容外,一切都很好。无论我如何尝试转义特殊字符,查询总是失败,主要是“未知命令\n”。

我使用过addslashes、mysql_real_escape_string、removeslashes 等。

有人对如何转义文件内容有任何想法吗?

非常感谢,

4

4 回答 4

2

我不明白您为什么要将文件存储在数据库中,但我建议您看一下prepared statements

于 2009-12-07T18:37:06.203 回答
1

我之前使用过以下序列,它似乎工作得很好,并将任何数据存储到数据库中,包括图像、pdf、数据数组等...... :)

存储数据(可以是字符串、数组、对象等);

一、将数据转成base64编码的字符串

$strData = strtr(
             base64_encode(
               addslashes(
                 gzcompress( serialize($dataToStore) , 9)
                 )
               ) , '+/=', '-_,');

然后将该字符串数据存储在数据库中...


检索数据;

从数据库中提取字符串数据

将数据解码回您想要的(根据输入数据、数组、图像等,您可能需要在此之后执行额外的步骤)

$returnData = unserialize(
                gzuncompress(
                  stripslashes(
                    base64_decode(
                      strtr($strDataFromDb, '-_,', '+/=')
                    )
                  )
                )
              );

这无疑帮助我将需要存储的内容存储在 mySQL 数据库中!

于 2009-12-08T00:19:29.000 回答
0

猜测:您可能会因为字符集之间的不兼容而遇到错误。PDF 可能是一个二进制文件,因此您需要确保设置了 db 列来处理它。

于 2009-12-07T18:47:34.390 回答
0

除了转义问题,如果(MySQL)系统变量max_allowed_pa​​cket设置为“小”值,您可能会遇到“数据包太大”错误。
使用 mysqli 扩展、prepared statements 和mysqli_stmt::send_long_data可以避免这两个问题。

于 2009-12-07T18:48:00.630 回答