【问题标题】:Which PDO parameter data type should I use for mysql blob?我应该为 mysql blob 使用哪种 PDO 参数数据类型?
【发布时间】:2020-01-23 08:41:33
【问题描述】:

在我的一个数据库表中,我有几列将加密文本存储为 BLOB。

到目前为止,在我准备好的 PDO 查询中,我一直在绑定值而不指定任何 PDO 数据类型,如下所示:

$sql->bindParam(':enc_txt', $enc_txt);

一切正常,但我想知道是否也指定参数类型会更好(并且可能)。

我应该使用 PDO::PARAM_STR 吗?或者可能是 PDO::PARAM_LOB ?

另外,当我没有指定任何参数类型时会发生什么?它是默认为 PARAM_STR 还是尝试自动检测类型?

【问题讨论】:

    标签: php mysql pdo


    【解决方案1】:

    两者都应该工作。 PDO::PARAM_LOB 允许您传递流,但仍然可以很好地处理字符串。 PDO::PARAM_STR 也能胜任。

    我个人使用PDO::PARAM_STR

    更多信息here。这可能取决于您传递数据的方式以及您的数据库系统。 TL;DR:Oracle 处理事情的方式略有不同。

    对于第二个问题,快速查看文档here 表明PDO::PARAM_STR 是默认设置。没有类型猜测。

    【讨论】:

      【解决方案2】:

      嗯,一切都可以从文档页面回答

      PDO::PARAM_LOB requires a file pointer resource 虽然我怀疑您是否会将文本保存到文件中只是为了将其存储在数据库中。

      第二个问题也是answerable:PDO::PARAM_STR 是省略时的默认类型。

      【讨论】:

        【解决方案3】:

        根据documentation,默认$data_typePDO::PARAM_STR

        因此,对于 blob 数据,您可能应该将其声明为 PDO::PARAM_LOB

        【讨论】:

          猜你喜欢
          • 2012-11-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-21
          • 1970-01-01
          • 2012-05-28
          • 2015-05-11
          相关资源
          最近更新 更多