mysqli预处理编译的深入理解_Mysql

记得以前php点点通也写过mysqli的预处理的php教程,那时候只是看书乱写的,没懂原理,数月过后,突然明白了很多:
想想看。假如我们要插入很多1000个用户,你怎么做,for循环?还是mysqli处理多条sql? no!这些处理很慢的,php里面有很多操作mysql数据库的函数,无非是把sql语句传递给mysql数据库,真正处理sql语句的是mysql,mysql数据库是要编译sql语句进行执行的,上面这两种操作会对相同的sql语句进行多次编译,有这必要吗?程序员总是很聪明的,于是有了mysqli预处理技术!mysqli还能防止sql注入攻击!
看看下面这个预编译代码:

复制代码 代码如下:

<?php
//创建连接
$mysqli=new mysqli("localhost","root","","test");
//设置mysqli编码
mysqli_query($mysqli,"SET NAMES utf8");
//检查连接是否被创建
if (mysqli_connect_errno()) {
printf("Connect failed:".mysqli_connect_error());
exit();
}
//创建准备语句
$stmt = $mysqli->prepare("select id,username from `user` where `id` > ?");
/*************************************************************/
$id=5;
//绑定参数
$stmt->bind_param("i",$id);
//绑定结果集
$stmt->bind_result($id,$username);
//执行查询
$stmt->execute();
//显示绑定结果的变量
while($stmt->fetch()){
echo "第".$id."个用户: ".$username."<br />";
}
/**************************************************************/
/*www.phpddt.com为你提示:上面*之间的内容可以重复执行类似功能,不需要再次编译了*/
//释放结果
$stmt->free_result();
//关闭编译语句
$stmt->close();
//关闭数据库的链接
$mysqli->close();
?>

时间: 2024-10-31 16:52:45

mysqli预处理编译的深入理解_Mysql的相关文章

PHP mysqli扩展库 预处理技术的使用分析_Mysql

1.使用mysqli扩展库 预处理技术 mysqli stmt 向数据库添加3个用户 复制代码 代码如下: <?php     //mysqli扩展库 预处理技术 mysqli stmt 向数据库添加3个用户    //1.创建mysqli对象    $mysqli = new MySQLi("localhost","root","root","test");    if($mysqli->connect_erro

PHP5 mysqli的prepare准备语句使用说明_Mysql

mysqli对prepare的支持对于大访问量的网站是很有好处的,它极大地降低了系统开销,而且保证了创建查询的稳定性和安全性.prepare准备语句分为绑定参数和绑定结果,下面将会一一介绍! (1)绑定参数 看下面php代码: 复制代码 代码如下: <?php //创建连接 $mysqli=new mysqli("localhost","root","","volunteer"); //检查连接是否被创建 if (mys

mysql与mysqli的区别与用法说明_Mysql

也就是说 mysql每次链接都会打开一个连接的进程而mysqli多次运行mysqli将使用同一连接进程,从而减少了服务器的开销 有些朋友在编程的时候,使用new mysqli('localhost', usenamer', 'password', 'databasename');总是报错,Fatal error: Class 'mysqli' not found in d:\... mysqli类不是php自带的吗? 不是默认开启的,win下要改php.ini,去掉php_mysqli.dll前

php Mysqli预处理语句二款实例代码

php教程 mysql教程i预处理语句二款实例代码 <?php /*=========================mysqli_stmt预处理类(推荐使用)=========================*/ /*===============================优点:效率高,安全================================*/  $mysqli=new mysqli("localhost","root","12

用Javap反编译帮你理解Java特性

编译     Java 开发人员熟悉在一个循环中使用StringBuffer 来代替串联 String 对象能获得最佳性能.然而,多数开发人员从来没有比较两种方法产生的字节代码的区别.在 Java 开发工具包(JDK)中有一个叫做 javap 的工具可以告诉你为什么这样做可以获得最佳性能. Javap 将一个类和它的方法的一些转储信息输出到标准输出.该工具不把代码反编译为 java 源代码,但是它会把字节代码反汇编成为由 Java 虚拟机规范定义的字节代码指令. 在你需要查看编译器为你或者给你做

Linux下MySQL 5.5.8 源码编译安装记录分享_Mysql

系统:Ubuntu 10.10 mysql源码文件:mysql-5.5.8.tar.gz 安装所需工具:cmake, GNU make, gcc, Perl, libncurses5-dev, bison(可选), chkconfig 注: 1.官方2010-11-18的源码有几处bug,在编译之前参照官方的说明,进行了手动修改. 官方说明链接:http://lists.mysql.com/commits/126782 2.官方5.5版本参考手册:http://dev.mysql.com/doc

mysqli多查询特性 实现多条sql语句查询_Mysql

mysqli相对于mysql有很多优势,建议大家使用,如果没有了解,可以查看mysql的基础教程: mysqli连接数据库 和 mysqli预处理prepare使用 .不仅如此,mysqli更是支持多查询特性,看下面这段php代码: 复制代码 代码如下: <?php $mysqli = new mysqli("localhost","root","","new"); $mysqli->query("set

php操纵mysqli数据库的实现方法_php实例

从php5.0开始增加mysql(i)支持 , 新加的功能都以对象的形式添加 i表示改进的意思 功能多.效率高.稳定 编译时参数: ./configure --with-mysql=/usr/bin/mysql_config \ #使用 Mysql ClientLibrary(libmysql)构建 --with-mysqli=mysqlnd \ #使用 Mysql Native Dirver 即mysqlnd --with-pdo-mysql=mysqlnd #使用 Mysql Native

PHP MySQL 预处理语句学习笔记

预处理语句及绑定参数   预处理语句用于执行多个相同的 SQL 语句,并且执行效率更高.   预处理语句的工作原理如下:   预处理:创建 SQL 语句模板并发送到数据库.预留的值使用参数 "?" 标记 .例如:INSERT INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?) 数据库解析,编译,对SQL语句模板执行查询优化,并存储结果不输出执行:最后,将应用绑定的值传递给参数("?" 标记),数据库执