1, PHP程序与mysql之间处理sql语句流程如下,减少执行时间方式有三种:

① 减少php发送sql次数;

② 减少php与mysql之间网络传输时间;

③ 减少mysql的编译时间;

2, 预编译可以减少数据库执行时间,同时可以防止sql注入攻击。预编译示例如下:

① 向user1中插入3条记录。

<?php
//预编译演示
//需求:请使用预处理的方式,向数据库添加三个用户 //1,创建mysqli对象
$mysqli = new MySQLi("10.252.158.217","root","521lhy","test");
if($mysqli->connect_error){
die("连接错误".$mysqli->connect_error);
}
//2,创建预编译对象
$sql = "insert into user1 (name,password,email,age) VALUES (?,?,?,?)";
$mysqli_stmt = $mysqli->prepare($sql); //绑定参数
$name ="小倩";
$password = "xiaoqian";
$email = "xiaoqian@126.com";
$age = 20;
//参数绑定->给》赋值,这里类型和顺序都要对应
$mysqli_stmt->bind_param("sssi",$name,$password,$email,$age);
//int对应i,double对应d,string对应s,boolean对应b
//执行
$b = $mysqli_stmt->execute();
if(!$b){
echo $name."添加出错";
} //继续添加
$name = "老妖";
$password = "laoyao";
$email = "laoyao@126.com";
$age = 120;
$mysqli_stmt->bind_param("sssi",$name,$password,$email,$age);
//执行
$b = $mysqli_stmt->execute();
if(!$b){
echo $name."添加出错";
} //继续添加
$name = "宁采臣";
$password = "ningcaichen";
$email = "ningcaichen@126.com";
$age = 24;
$mysqli_stmt->bind_param("sssi",$name,$password,$email,$age);
//执行
$b = $mysqli_stmt->execute();
if(!$b){
echo $name."添加出错";
} //释放
$mysqli->close();

② 查询所有id大于5的用户信息以及id大于10的用户信息。

<?php
//预编译演示
//需求:请使用预处理的方式,从数据库查询
//使用预处理的方法,查询所有id>5的用户的id,name,email
$mysqli = new MySQLi("10.252.158.217","root","521lhy","test");
if($mysqli->connect_error){
die("连接错误".$mysqli->connect_error);
} //创建一个预定义的对象?占位
$sql = "select id,name,email from user1 where id > ?";
$mysqli_stmt = $mysqli->prepare($sql); $id = 5; //绑定参数
$mysqli_stmt->bind_param("i",$id); //执行
$mysqli_stmt->execute(); //绑定结果集
$mysqli_stmt->bind_result($id,$name,$email); //取出绑定的值
while($mysqli_stmt->fetch()){
echo "<br/>--$id--$name--$email";
} echo "<br/>**********************************";
$id = 14; //绑定参数
$mysqli_stmt->bind_param("i",$id); //执行
$mysqli_stmt->execute(); //取出绑定的值
while($mysqli_stmt->fetch()){
echo "<br/>--$id--$name--$email";
} //关闭资源
//释放结果
$mysqli_stmt->free_result();
//关闭预编译
$mysqli_stmt->close(); //关闭连接
$mysqli->close();

3, 防止sql注入攻击方式,$sql = “select * from user where username = ‘aaa’ and password =’bbb’”;用此种方式查询时候,如果输入密码是xx’ or 1=’1,即$sql = “select * from user where username = ‘aaa’ and password =’ xx’ or 1=’1’”;这个也会成功的,这就是sql注入。

① 使用预编译。

② 改变验证数据库用户逻辑

$sql = “select password from user where username = ‘aaa’”;

//看看有没有查询到记录,如果有说明用户存在

If(从数据库查询的密码==用户输入的密码){

       //合法,用户合法

       header(“admin.php”);

}else{

       header(“err.php”);

}

mysqli扩展库---------预处理技术的更多相关文章

  1. php mysqli扩展库之预处理操作

    分享下php使用mysqli扩展库进行预处理操作的二个例子,有意研究mysqli用法的朋友,可以参考学习下,一定会有所帮助的. 例1.使用mysqli扩展库的预处理技术 mysqli stmt 向数据 ...

  2. PHP使用mysqli扩展库实现增删改查(面向对象版)

    mysqli扩展库是mysql扩展库的改进版本,在mysql扩展库的基础上提高了稳定性和效率,mysqli扩展库有两套东西,一套就是面向过程的mysqli另一套是面向对象的mysqli.操作方式大体和 ...

  3. mysqli扩展库操作mysql数据库

    配置环境 配置php.ini文件让php支持mysqli扩展库 extension=php_mysqli.dll 建库建表 详见博客 “mysql扩展库操作mysql数据库” 查询数据库 <?p ...

  4. 【小结】有关mysql扩展库和mysqli扩展库的crud操作封装

    现阶段php如果要操作mysql数据库 php给我们提供了3套库 1.mysql扩展库   面向过程操作 2.mysqli扩展库  面向对象操作和面向过程操作并存  安全性和效率高于mysql扩展库 ...

  5. 使用php的mysqli扩展库操作mysql数据库

    简单介绍mysqli: 1.mysqli(mysql improve mysql扩展库的增强版) mysql扩展库和mysqli扩展库的区别 1.mysqli的稳定性  安全性 和 执行效率有所提高 ...

  6. mysqli扩展库应用---程序范例

    通过mysqli扩展库对用户表user1进行增删改查操作,用户表user1结构如下: 1,建立数据库操作类库mysqliTool.class.php,代码如下: <?php class mysq ...

  7. php数据库编程---mysqli扩展库

    1,mysqli扩展库允许我们访问MySQL数据库,并对MySql数据库进行curd操作.Mysqli扩展库比mysql扩展库加强了. 2,mysqli扩展库和mysql扩展库的比较 (1) mysq ...

  8. PHP mysqli 扩展库(面向对象/数据库操作封装/事务控制/预编译)

    1.和mysql扩展库的区别: (1   安全性.稳定性更高 (2  提供了面向对象和面向过程两种风格 2.php.ini  中的  extension=php_mysqli.dll 解除封印 3.面 ...

  9. mysqli扩展库的 预处理技术 mysqli stmt

    问题的提出? 现在需要向mysql数据库添加100个用户,请问如何实现? 思路: 使用for循环100次,向数据库中添加100个用户. 使用批量添加 $sql1=”insert xxx”; $ssql ...

随机推荐

  1. java算法 第七届 蓝桥杯B组(题+答案) 4.分小组

    4.分小组  (代码填空) 9名运动员参加比赛,需要分3组进行预赛.有哪些分组的方案呢? 我们标记运动员为 A,B,C,... I下面的程序列出了所有的分组方法. 该程序的正常输出为:ABC DEF ...

  2. rocketmq消息存储概述

    了解消息存储部分首先需要关注的几个方法,load()--Load previously stored messages.start()--Launch this message store.putMe ...

  3. 基于Mybatis分页插件PageHelper

    基于Mybatis分页插件PageHelper 1.分页插件使用 1.POM依赖 PageHelper的依赖如下.需要新的版本可以去maven上自行选择 <!-- PageHelper 插件分页 ...

  4. HBase、HDFS与本地文件系统之间的关系

    一.文件系统 1. 概念 所谓文件系统,是操作系统用于明确磁盘或分区上的文件的方法和数据结构:即在磁盘上组织文件的方法.也指用于存储文件的磁盘或分区,或文件系统种类. 2. Local File Sy ...

  5. ubuntu14.04 64位安装 g2o

    参考链接:http://blog.csdn.net/jiujiu932/article/details/52248577 http://www.cnblogs.com/gaoxiang12/p/473 ...

  6. IIS7日志中时间与系统时间不一致的原因

    最近在分析web日志,发现IIS7日志中时间与系统时间不一致,即本该上班时间才产生的产并发访问日志,全部发生在凌晨至上班前. 本以为是系统时间设置错误,检查后一切正常.后查询资料,原来是这个原因: 日 ...

  7. 推荐一个好用的sql版本控制和美化工具SQLToolbelt

    SQL Toolbelt含Red Gate公司目前出品的所有SQL Server工具和新版本.也就是说,当你使用SQL Server数据库工作时,您可以很方便的获得您所需要的一套强大的工具,包括SQL ...

  8. 快速搭建Wordpress

    1. 下载:ZentaoPMS作为Mysql Apach Php的基础环境: 2. 下载:Wordpress安装包: 3. 将Wordpress解压,放置于ZentaoPMS的Xampp的htdocs ...

  9. easyui-tabs扩展根据自定义属性打开页签

    .增加扩展 <script type="text/javascript" > /** * @author {kexb} easyui-tab扩展根据id切换页面 */ ...

  10. Java设计模式(3)——抽象工厂模式

    抽象工厂模式是所有形态的工厂模式中最为抽象和最其一般性的.抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象. 一.产品族和产品等级结构 为 ...