gpt4 book ai didi

c++ - 单引号防止 bindValue 替换占位符标记

转载 作者:行者123 更新时间:2023-11-28 02:27:40 28 4
gpt4 key购买 nike

当我使用 bindValue 准备语句时,如果占位符被单引号括起来,则它不会被替换。这是有问题的,因为在 SQL 中字符串被单引号包围以避免关键字冲突。请参阅我的附件,其中包含一次插入单引号和一次不插入单引号的数据库内容屏幕截图。我已经报告了 bug ,但同时我不确定这是否不仅仅是一个编码问题。使用单引号是否正确,即这应该有效/这真的是一个错误吗?

带引号 enter image description here没有引号 enter image description here

最佳答案

这不是错误。只是不要使用单引号。 bindValue 机制不只是将您的 :path 替换为语句中的字符串。没有名称冲突的风险。将其视为某种不同的命名空间。 :-)

http://en.wikipedia.org/wiki/Prepared_statement : 准备好的语句通常通过非 SQL 二进制协议(protocol)执行,以提高效率和防止 SQL 注入(inject),但对于某些 DBMS,例如 MySQL,也可以使用 SQL 语法进行调试。

http://en.wikipedia.org/wiki/SQL_injection#Parameterized_statements :对于大多数开发平台,可以使用使用参数的参数化语句(有时称为占位符或绑定(bind)变量),而不是将用户输入嵌入到语句中。 占位符只能存储给定类型的值,不能存储任意 SQL 片段。因此,SQL 注入(inject)将被简单地视为一个奇怪的(并且可能无效的)参数值。

关于c++ - 单引号防止 bindValue 替换占位符标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29989309/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com