预处理是php中防止SQL注入的一种方式。
在mysqli操作中常常涉及到它的三个主要类:MySQLi类,MySQL_STMT类,MySQLi_RESULT类。预处理主要是利用MySQL_STMT类完成的。
预处理是一种重要的 防止SQL注入的手段,对提高网站安全性有重要意义。
创建SQL语句模板并发送到数据库。预留的值使用参数“?”。例如:INSERT INTO student(id,name,sex,age) values (?,?,?,?)
1)用?代替变量
2)获得mysqli_stmt对象,一定要记住传$sql,预处理是对sql语句的预处理
3)第一个参数表明变量类型,i(int) d(double) s(string) b(blob)=>二进制类型
4)执行与处理语句,获取结果集
5)预处理对象最后一定要关闭
$sql = "SELECT * FROM `user` WHERE user=? and pwd=?";
$stmt = $conn->prepare($sql);
if($stmt = $conn->prepare($sql)){
$stmt -> bind_param("ss",$user,$pwd);
$stmt -> execute();
$stmt -> store_result();
if($stmt->num_rows==0){
show_error('输入的用户名或密码错误','login.html');
}
$stmt->close();
}