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语句

     

  • 相关阅读:
    SPOJ 694 (后缀数组) Distinct Substrings
    POJ 2774 (后缀数组 最长公共字串) Long Long Message
    POJ 3693 (后缀数组) Maximum repetition substring
    POJ 3261 (后缀数组 二分) Milk Patterns
    UVa 1149 (贪心) Bin Packing
    UVa 12206 (字符串哈希) Stammering Aliens
    UVa 11210 (DFS) Chinese Mahjong
    UVa (BFS) The Monocycle
    UVa 11624 (BFS) Fire!
    HDU 3032 (Nim博弈变形) Nim or not Nim?
  • 原文地址:https://www.cnblogs.com/zixuanfy/p/6682229.html
Copyright © 2011-2022 走看看