对PDO和bindparam的澄清

jim*_*jim 4 php

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

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

bob*_*nce 6

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

如果您在传递非引用方面遇到问题bindParam,我建议您使用bindValue.实际上我建议一直使用该调用,因为bindParam(和mysqli_stmt_bind_param)的引用行为令人困惑,几乎总是不需要的.

  • 是的,你不需要带有PDO的`mysql_real_escape_string`.字符串值直接进入数据库层,而不必粗略地拼接到SQL语句中.因为它没有以SQL字符串文字为框架,所以不需要转义任何内容. (4认同)