$mysqli_stmt->bind_param('ss',$username,$password);之后改变了什么

来源:3-3 MySQLi中使用预处理语句防止SQL注入

坚持MyDream

2016-12-08 14:50

$mysqli_stmt->bind_param('ss',$username,$password);

之后是改变了什么东西?  还是需要再$mysqli_stmt->execute();才有改变什么

这时候输出$sql还是跟原来一样, echo $mysqli_stmt显示错误

请就用$username='or 1=1#' 为例,告诉我 上面操作之后改变了什么

写回答 关注

2回答

  • Lydiar3308665
    2017-06-15 15:35:05
    已采纳

    相当于将?当做一个x来执行了语句,后面的绑定参数操作,然后执行操作之后,不再是用原来的句子查询一遍,而是将编译好的语句,带入特定参数,执行时将‘or 1=1 #当做一个字符串实参代入,而不是拼接成完整sql语句再去执行。。。。。。 

    坚持MyDr...

    非常感谢!

    2017-06-19 10:51:19

    共 1 条回复 >

  • 坚持MyDream
    2016-12-08 15:12:31

    如果有一账户的用户名和密码分别为      __dog     密码:    123;

    是不是因为bind_param('ss',$username,$password);         账户名含有 "__" 因而不进行查询

Duang~MySQLi扩展库来袭

本教程从面向对象和面向过程两个方面为你开启MySQLi学习之旅

28643 学习 · 181 问题

查看课程

相似问题