猿问

我应该为 mysql blob 使用哪种 PDO 参数数据类型?

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

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

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

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

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

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


慕桂英546537
浏览 177回答 3
3回答

倚天杖

好吧,一切都可以从文档页面得到解答PDO::PARAM_LOB 需要文件指针资源,而我怀疑您是否要将文本保存到文件中只是为了将其存储在数据库中。第二个问题也是可以回答的:PDO:: PARAM_STR是省略时的默认类型。

30秒到达战场

两者都应该工作。 PDO::PARAM_LOB允许您传递流,但仍然可以与字符串一起正常工作。 PDO::PARAM_STR也做这项工作。我个人使用PDO::PARAM_STR.更多信息在这里。这可能取决于您传递数据的方式以及您的数据库系统。TL;DR:Oracle 处理事情的方式略有不同。对于您的第二个问题,快速查看此处的文档表明PDO::PARAM_STR是默认设置。没有类型猜测。

慕森卡

根据文档,默认$data_type值为PDO::PARAM_STR:因此,您可能应该将其声明为PDO::PARAM_LOB用于 blob 数据。
随时随地看视频慕课网APP
我要回答