PHP-----mysqli编译预处理
2016-12-12 16:28
232 查看
先说下php和mysql执行的原理,
php发出sql命令给 mysql数据库,
mysql数据编译sql命令,
mysqi执行编译后的sql命令
mysql返回结果给php
应用场景:有的时候会需要批量执行多个操作,除了批量的sql意外,可能会需要因为需求来的时候是分批的。所以会分几次发请求。如果是按正常的流程来走,会分多次发起请求,然后应用上面的流程。为了提高效率,使用预处理技术,预处理有点类似正则表达式。如果请求是类似的,就把请求中变化的关键字 设成变量,然后发给mysql,mysql会保留这个编译的语句,每次新请求来,就用新请求中的变量去替换预设编译好语句中的变化位置。
代码如下:
用于处理执行dql语句
//预编译演示
//使用预处理的方式,从数据库查询
//使用预处理的方法查询所有 id>5的用户的enword chword, 5这个参数以后可以变
//1.创建mysqli对象
$mysqli= new MySQLi("localhost","root","root","worddb");
if (mysqli_connect_error()){
die(mysqli_connect_error());
}
//2.创建预编译对象,?是占位符
$sql="select enword,chword from words where id>?";
$mysqli_stmt=$mysqli->prepare($sql);
//绑定参数
$id=5;
//参数绑定就是给?赋值
/*
s ----string 字符串
i ----int 整形
d ----double
b ----blob
*/
$mysqli_stmt->bind_param("i",$id);
//绑定结果集,这个方法stmt_result,传入的的参数是地址符&传入,可以把运行后的结果带出来
$mysqli_stmt->bind_result($enword,$chword);
//执行
$mysqli_stmt->execute();
while($mysqli_stmt->fetch()){
echo "<br/>--$enword--$chword";
}
//执行另一个sql
echo "<br/>****************************************<";
$id=10;
$mysqli_stmt->bind_param("i",$id);
//绑定结果集,这个方法stmt_result,传入的的参数是地址符&传入,可以把运行后的结果带出来
//第2次无需在绑定结果集
//$mysqli_stmt->bind_result($enword,$chword);
//执行
$mysqli_stmt->execute();
while($mysqli_stmt->fetch()){
echo "<br/>--$enword--$chword";
}
//关闭资源
//关闭结果集,释放结果
$mysqli_stmt->free_result();
//关闭预编译的语句
$mysqli_stmt->close();
//关闭链接
$mysqli->close();
php发出sql命令给 mysql数据库,
mysql数据编译sql命令,
mysqi执行编译后的sql命令
mysql返回结果给php
应用场景:有的时候会需要批量执行多个操作,除了批量的sql意外,可能会需要因为需求来的时候是分批的。所以会分几次发请求。如果是按正常的流程来走,会分多次发起请求,然后应用上面的流程。为了提高效率,使用预处理技术,预处理有点类似正则表达式。如果请求是类似的,就把请求中变化的关键字 设成变量,然后发给mysql,mysql会保留这个编译的语句,每次新请求来,就用新请求中的变量去替换预设编译好语句中的变化位置。
代码如下:
用于处理执行dql语句
//预编译演示
//使用预处理的方式,从数据库查询
//使用预处理的方法查询所有 id>5的用户的enword chword, 5这个参数以后可以变
//1.创建mysqli对象
$mysqli= new MySQLi("localhost","root","root","worddb");
if (mysqli_connect_error()){
die(mysqli_connect_error());
}
//2.创建预编译对象,?是占位符
$sql="select enword,chword from words where id>?";
$mysqli_stmt=$mysqli->prepare($sql);
//绑定参数
$id=5;
//参数绑定就是给?赋值
/*
s ----string 字符串
i ----int 整形
d ----double
b ----blob
*/
$mysqli_stmt->bind_param("i",$id);
//绑定结果集,这个方法stmt_result,传入的的参数是地址符&传入,可以把运行后的结果带出来
$mysqli_stmt->bind_result($enword,$chword);
//执行
$mysqli_stmt->execute();
while($mysqli_stmt->fetch()){
echo "<br/>--$enword--$chword";
}
//执行另一个sql
echo "<br/>****************************************<";
$id=10;
$mysqli_stmt->bind_param("i",$id);
//绑定结果集,这个方法stmt_result,传入的的参数是地址符&传入,可以把运行后的结果带出来
//第2次无需在绑定结果集
//$mysqli_stmt->bind_result($enword,$chword);
//执行
$mysqli_stmt->execute();
while($mysqli_stmt->fetch()){
echo "<br/>--$enword--$chword";
}
//关闭资源
//关闭结果集,释放结果
$mysqli_stmt->free_result();
//关闭预编译的语句
$mysqli_stmt->close();
//关闭链接
$mysqli->close();
相关文章推荐
- PHP学习 mysqli的 预处理
- mysqli预处理编译的深入理解
- PHP之——CentOS linux下为已经编译好的php环境添加mysqli扩展
- PHP mysqli 预处理
- PHP(Mysqli和PDO)预处理
- 对mysqli预处理编译的理解
- mysqli预处理编译的深入理解
- php mysqli扩展之预处理
- PHP编译支持mysqli
- php编译安装 GD库与mysqli 与curl
- php学习笔记(二十)mysqli的stmt的预处理类的使用(防止sql注入问题)
- PHP的扩展类 mysqli_stmt:预处理类
- PHPmysqli的 预处理执行查询语句
- PHP 对MySQLI预处理的包装
- php动态编译mysqli扩展
- PHP学习 mysqli的 预处理
- PHPmysqli的 预处理执行插入语句
- PHP学习 mysqli预处理查询结果集
- 较全面的php mysql封装,使用mysqli对象支持预处理和事务,可输出执行后的sql
- PHP 扩展编译通用办法(以memcache ,mysqli扩展为例)