Codeigniter 在查询中转义句点
我有这个位用于在数据库中搜索 IP 地址。
$this->db->where("IP1='$ip' OR IP2='$ip'");
当我使用它时,它会转义 IP 地址中的句点并通过生成此值来中断查询。
SELECT * FROM (`xxxx`) WHERE `IP1='111`.`111`.`111`.`111'`
我希望它产生:
SELECT * FROM (`xxxx`) WHERE IP1='111.111.111.111' OR IP2 = '111.111.111.111'
谢谢!
I have this bit that I'm using to search IP addresses in a database.
$this->db->where("IP1='$ip' OR IP2='$ip'");
When I use it, it is escaping the periods in the IP addresses and breaking the query by producing this.
SELECT * FROM (`xxxx`) WHERE `IP1='111`.`111`.`111`.`111'`
I want it to produce:
SELECT * FROM (`xxxx`) WHERE IP1='111.111.111.111' OR IP2 = '111.111.111.111'
Thank you!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
来自文档:
“
$this->db ->where()
接受可选的第三个参数,如果将其设置为 FALSE,CodeIgniter 将不会尝试使用反引号保护您的字段或表名称。”如果你这样做,你最好确保你正在清理你的变量。
From the documentation:
"
$this->db->where()
accepts an optional third parameter. If you set it to FALSE, CodeIgniter will not try to protect your field or table names with back-ticks."You better make sure that you are sanatizing your variables if you do it this way.
这看起来像是
where
帮助器中的错误。根据文档,您可以包含可选的第三个参数FALSE 来阻止 CodeIgniter 转义您的表/字段名称:
但是,如果
$ip
来自用户输入,您将不再受到保护,免受此查询中的 SQL 注入。This looks like a bug in the
where
helper. According to the documentation, you can include an optional third parameter ofFALSE
to stop CodeIgniter from escaping your table/field names:However, if
$ip
comes from user input you will no longer be protected from SQL injection in this query.