zoukankan      html  css  js  c++  java
  • PHP.15-mysqli

    从PHP5.0开始可以使用mysql(i), 是一个面向对象的技术(新加功能都会以对象形式添加)

    i:表示改进,1. 功能增加了, 2,效率大大增加(以后的PHP项目改成mysqli),3,更稳定


    mysqli使用面向对象技术,但也支持过程化的使用方式

    mysqli扩展中给我提供了三个类:


    1. mysqli和连接有关的类

    2. mysqli_result表达了对数据库的查询所返回的结果集。

    3. mysqli_stmt (后面重点介绍)

    可以选择过程化编程,或是选择面向对象技术

    mysql(i)_connect()

      面向对象:$mysqli = new $mysqli("localhost", "username", "password", "select_db");  //实例化对象

      面向过程:$mysqli = mysqli_connect("localhost", "username", "password", "select_db");
    mysql(i)_select_db();
    mysql(i)_query();


    注:一般使用mysqli扩展就要使用面向对象的编程方式进行开发

    1、mysqli处理结果集(mysqli_result)

     使用select语句后,得到的结果集的处理

    一、处理记录
    属性:mysqli_num_rows();  //返回结果集中行的数量
    方法:
    data_seek();  //调整结果集指针到结果集任意一行
    fetch_assoc();  //从结果集中取得一行作为关联数组
    fetch_row();    //从结果集中取得行

    注:常用的为上面两个
    fetch_array();  //从结果集中取得一行作为数字数组或关联数组
    fetch_object();  //从结果集中取得当前行,并作为对象返回。

    free_result();  //释放结果内存

    二、处理字段信息
    field_count;  //返回最近查找的列数
    current_field;  //获取结果指针的当前字段偏移量
    lengths;      //返回结果集中当前行的列的长度

    fetch_field();    //从结果集中取得下一字段,并作为对象返回。
    fetch_fields();    //返回结果集中代表字段(列)的对象的数组,然后输出每个字段名称、表格和最大长度

     

    2、mysqli完成事务处理和一次执行多条sql语句

    一、使用mysqli执行多条语句
    a、就是没有结果集(如:插入、更新、删除等语句)
    b、多条语句有结果集

    二、使用mysqli完成事务处理
    事务处理 (多个SQL要完成的任务看为是一个事务)一件事(有任何一个环节出错,都整个事务撤消, 如果都成功才去提交)

    目前只有InnoDB 支持事务 (MyISAM)

    默认表都是自动提交的(autocommit)

    1. 关闭自动提交

    2. start事务(如果自动提交已经关闭,使用mysqli不需要开启事务,PDO中则需要)

    [start transaction:开启事务,在mysql中输入]

    commit;    //提交事务

    rollback;    //回滚当前事务

    multi_query;   //执行多条数据库语句

    三、其他的mysqli类的中的成员使用

    3、mysqli预处理类

    mysqli_stmt预处理类(推荐你使用的类)

    	$mysqli=new mysqli("localhost", "root", "123456", "xsphpdb");
    
    	//准备好一条语句放到服务器中,插入语句
    	$sql="insert into shops(name, price, num, desn) values(?, ?, ?, ?)";
    
    	$stmt=$mysqli->prepare($sql);
    
    	//给占位符号每个?号传值(绑定参数) i:整形  d:浮点  s:字符  b:二进制 
    	$stmt->bind_param("sdis", $name, $price, $num, $desn);
    
    	$name="zhangsan";
    	$price=56.78;
    	$num=66;
    	$desn="hello good";	
    
    	//执行
    	$stmt->execute();
            $stmt->close();
    

      

    和mysqli和mysqli_result相比优点:
    1. mysqli和mysqli_result参完成的功能,都可以使用mysqli_stmt完成

    2. 效率上:高, 就是如果执行多次相同的语句,只有语句数据不同, 因为将一条语句在服务器端准备好,然后将不同的值传给服务器,再让这条语句执行


    编译一次,使用多次

    3. 安全上:SQL注入(? 占位) ,后期传的值不会当成SQL语句

     

  • 相关阅读:
    POJ3164 Command Network
    UVa11401 Triangle Counting
    UVa11174 Stand in a Line
    UVa11806 Cheerleaders
    Uva11538 Chess Queen
    Bzoj3130 [Sdoi2013]费用流
    Bzoj3262 陌上花开
    模拟25A 题解
    模拟24 题解
    模拟23 题解
  • 原文地址:https://www.cnblogs.com/zixuanfy/p/6682229.html
Copyright © 2011-2022 走看看