对PDO和bindparam的澄清

时间:2010-02-25 01:47:35

标签: php

我是PDO的新手,不得不说到目前为止我喜欢它,但我对它使用的一些调用仍然有点不稳定,而且文档并不是那么牢固。

我正在使用几个存储过程,根据我对PDO的理解,我不得不为此做准备。我构建了一个模块,用于存储有关用户引起的任何错误的信息。我知道bindParam将转义任何引号并在将字符串插入数据库之前清除它,这不是我想要的。我希望在用户输入字符串时看到字符串以进行故障排除。我试图放弃bindparam调用但是在尝试通过引用传递时遇到错误。我有办法实现这个目标吗?也欢迎提出建议。感谢。

1 个答案:

答案 0 :(得分:6)

bindParam不会“逃避”或“清理”任何东西。它将您提供的字符串直接发送到数据库层,逐字。字符串中包含的任何'字符最终将作为数据库中列的'字符。这就是参数化的全部要点:不需要担心“特殊字符”。

如果您在向bindParam传递非引用时遇到问题,建议您改用bindValue。实际上我建议一直使用该调用,因为bindParam(和mysqli_stmt_bind_param)的引用行为令人困惑,而且几乎总是不受欢迎。