$mysqli_stmt->bind_param('ss',$username,$password);
之后是改变了什么东西? 还是需要再$mysqli_stmt->execute();才有改变什么
这时候输出$sql还是跟原来一样, echo $mysqli_stmt显示错误
请就用$username='or 1=1#' 为例,告诉我 上面操作之后改变了什么
相当于将?当做一个x来执行了语句,后面的绑定参数操作,然后执行操作之后,不再是用原来的句子查询一遍,而是将编译好的语句,带入特定参数,执行时将‘or 1=1 #当做一个字符串实参代入,而不是拼接成完整sql语句再去执行。。。。。。
如果有一账户的用户名和密码分别为 __dog 密码: 123;
是不是因为bind_param('ss',$username,$password); 账户名含有 "__" 因而不进行查询