白曰梦想家
2017-04-26 15:25
请问绑定这种方法跟直接在execute方法的括号里传参给占位符有什么区别? $res = $stmt->execute(array('用户名','密码','邮箱')); 仅仅是因为绑定可以设置数据类型吗? 绑定方法太繁琐了
execute() 传参或 bindValue() 是绑定常量到参数;bindParam() 是绑定变量到参数。
相比之下,绑定变量更加灵活。
$res = $stmt->execute(array('用户名','密码','邮箱')); 也是可以防止SQL注入的, 我用的是execute方法哟,不是exec方法,我是给占位符分配数据过去,用的预处理
绑定参数可以防止sql注入。什么是sql注入?如果你的sql是这样"select * from tb_user where user_name = ?" 当你不用绑定参数,而是选择直接传参,你本来预期的参数比如是zhangsan,用户通过输入框输入的,即(select * from tb_user where user_name= 'zhangsan'),但对方输入了'zhangsan or 1=1',你的sql就变成了 select * from tb_user where user_name = 'zhangsan',结果要么所有用户信息泄露,要么你的服务器死机,知道危害了吧
PDO—数据库抽象层
30043 学习 · 396 问题
相似问题