MySQLi实现数据库操作的预处理

1、预处理是为了什么?

我们在查数据库时,有时要用到一些结构相同,只有参数不同的SQL语句,使用预处理这种方式,可以让我们在查询数据库的时候,提高速度。

2、预处理是怎样提高查询速度的?

通常我们在查询数据库的时候,我们的SQL语句和参数是同时在数据库系统中经过编译执行的,在批量查询时,我们要不停的经过编译执行的过程获取数据库中的数据,预处理将SQL语句与参数的传递分开进行:我们先将所要用的SQL结构进行新编译,然后每次要查询数据库时,仅仅将变量传进去,不再去编译SQL语句,换句话说,我们创建了一个预处理语句,就相当于在数据系统里建立了一个“功能站”,每次查数据库就相当于往“功能站”里添加参数,即使多次查询,仍然只做一次SQL编译,速度自然提升。

3、预处理为什么能够从根本上解决SQL注入问题?

因为预处理,SQL语句的编译和参数的传递是分开进行的,而参数传递进入数据库后统一当成字符串处理,所以即使传进的参数有注入语句,默认当做字符串处理,也就对数据库构不成威胁了。

4、预处理的代码实现

<?php
//预处理技术

//创建一个mysqli对象
$mysqli = new MySQLi("主机名","mysql用户名","密码","数据库名");

//判断是否链接成功
if($mysqli->connect_error){
	die($mysqli->connect_error);
}

//创建预编译对象
$sql = "insert into 表名 (name,qq,age) values (?,?,?)";
$mysqli_compile = $mysqli->prepare($sql);

//绑定参数
$name="tao";
$qq="12345678";
$age="20";

//给?处进行赋值,"ssi"指string,string,int,数据类型和顺序一一对应,注:‘i’->int,'s'->string,'d'->double float
//bind_param()这里参数数目是可变。
$mysqli_compile->bind_param("ssi",$name.$qq,$age);

//执行语句,返回布尔值
$res = $mysqli_compile->execute();

//失败打印出原因
if(!$res){
	die("失败原因=".$mysqli_compile-error);
}

//关闭资源
$musqli->close();
?>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值