我在这两个函数之间混淆Bindvalue()和Bindparam()
>我在PHP.net上读取它不能逃脱%和_,所以在使用LIKE时要小心.所以我认为当我们使用LIKE查询时,BindValue()不被使用.
>当我们使用LIKE查询时使用Bindparam().因为我知道BindParam可以逃脱这些%和_.
> BindValue()不提供针对sql注入的保护.我不知道这是真的吗?
朋友告诉我在这3点中提到的是对还是错.
我是PDO的初学者,请您明确说明
价值观如何逃脱或不被逃脱应该没有区别. bindParam与bindValue不同,因为它引用该变量,仅在执行该语句时绑定该值. bindValue立即取值.为了显示:
$stmt = $db->prepare('SELECT * FROM `table` WHERE foo = :foo'); $foo = 'foo'; $stmt->bindValue(':foo',$foo); $foo = 'bar'; $stmt->execute();
以上执行像SELECT * FROM table WHERE foo =’foo’;
$stmt = $db->prepare('SELECT * FROM `table` WHERE foo = :foo'); $foo = 'foo'; $stmt->bindParam(':foo',$foo); $foo = 'bar'; $stmt->execute()
以上执行像SELECT * FROM table WHERE foo =’bar’.
这是真的,既不关心_或%作为特殊字符,因为一般来说,它们不是特殊字符,就语法而言,数据库驱动程序无法分析上下文,以确定您是否意味着%一个通配符或实际字符“%”在LIKE查询的上下文中.
两者都可以防止sql注入.
原文地址:https://www.jb51.cc/php/131066.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。