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. C# Equals

    [C# Equals] 1.Object.Equals() The type of comparison between the current instance and the obj parame ...

  2. render组件

    [render组件] Render继承于Component. It contians general functionality for all renderers. A renderer is wh ...

  3. Excel VBA入门(五)Excel对象操作

    本章是本系列教程的重点.但我觉得应该不是难点.从第零章开始到学完本章,应该可以把VBA用于实战中了. Excel对象主要有4个: 工作薄 Workbook 工作表 Worksheet 单元格区域 Ra ...

  4. 纸牌游戏CardBattle的设计与开发

  5. 游戏动作师使用Unity3D遇到过的所有问题

    http://blog.csdn.net/onafioo/article/details/50865169 http://www.gameres.com/thread_480489.html 文/拉撒 ...

  6. [C++] const and char*

    const and char* NOTICE:   char  *str = "hello";  the value of str is the address of the fi ...

  7. nltk 之 snowball 提取词干-乾颐堂

    机器学习中很重要的应用场景就是机器自动分类,而分类的关键是词干提取.所以我们要用到snowball.下面说一下snowball 提取词干的两种方法. 两种方法: 方法一: >>> f ...

  8. 使用DBMS_SCHEDULER包管理计划任务

    Dbms_scheduler是Oracle提供创建计划任务的包,任务类型可以是执行PL\SQL程序.执行外部脚本.调用操作系统命令,通常用于创建定期定时的任务,不依赖操作系统,保存在数据库内,数据库迁 ...

  9. PBOC中文件结构,文件类型解析

    1.明确两个规范,a. ISO7816   b.EMV规范/PBOC规范,二者的区别,7816是ISO制定的,是国际规范,而EMV规范是卡组织制定的,是遵循ISO7816规范的,PBOC是抄袭EMV规 ...

  10. [GO]使用bufio的文件读取方式

    package main import ( "os" "fmt" "bufio" "io" ) func ReadFil ...