1,mysqli扩展库允许我们访问MySQL数据库,并对MySql数据库进行curd操作。Mysqli扩展库比mysql扩展库加强了。

2,mysqli扩展库和mysql扩展库的比较

(1) mysql是非持继连接函数而mysqli是永远连接函数。也就是说 mysql每次链接都会打开一个连接的进程,而 mysqli多次运行mysqli将使用同一连接进程,从而减少了服务器的开销。

(2) mysqli连接是永久连接,而mysql是非永久连接。

mysql连接:每当第二次使用的时候,都会重新打开一个新的进程。

mysqli连接:一直都只使用同一个进程。

好处:这样就可以很大程度的减轻服务器端压力。

当然,如果mysql也需要永久连接的话,就可以使用mysql_pconnect()这个函数

(3) mysqli支持面向对象编程,同时mysqli扩展库考虑到php老程序员,提供面向过程的编程风格。

(4) mysqli支持一次执行多条sql。

(5) mysqli具有事务特性。

3,mysqli有两套编程风格

4,mysqli编程的快速入门,编写一个程序,这个程序从user1数据表中读取数据,并打印在网页中。

(1) 面向过程实现,mysqli面向过程与mysql基本相同,就是在mysql后加i,变为mysqli即可。不过还是有两处不同,分别是:

(1.1) 连接conn时候,mysql是在conn连接成功后,重新一步获取数据库的;mysqli是在conn连接同时获取数据库的。

mysqli进行连接

  1. $conn = mysqli_connect($host,$username,$password,$dbName);

mysql进行连接

  1. $conn = mysql_connect($host,$username,$password,$dbName);
  2. mysql_select_mysql($dbName);

(1.2) 执行sql语句时候,mysql参数依次是$sql和$conn,而mysqli的次序恰好相反。

mysqli

  1. $rs = mysqli_query($conn,$sql);

mysql

  1. $rs = mysql_query($sql, $conn);

(1.3)mysqli实例如下:

  1. <?php
  2. //mysqli操作mysql数据库(面向过程风格)
  3. //1,得到mysqli连接
  4. $conn = mysqli_connect("127.0.0.1","root","123456","test") or die('连接失败:'.$conn_connect_error());
  5.  
  6. mysqli_query("set names utf-8");
  7. //2,向数据库发送sql语句(ddl,dml dql.....)
  8. $sql = "select * from user1";
  9. mysqli_query($mysqli,$sql);
  10.  
  11. //3,处理得到的结果
  12. //循环取出$res中的数据mysqli_fetch_row mysql_fetch_row
  13. while($row=mysqli_fetch_assoc($res)){
  14. foreach($row as $key=>$val){
  15. echo "--$val";
  16. }
  17. echo "<br/>";
  18. }
  19. //4,关闭资源
  20. //释放资源
  21. mysqli_free_result($res);
  22. //关闭连接
  23. mysqli_close();
  24. ?>

(2) 面向对象实现,面向对象实现与面向过程实现类似,就是$conn和$rs都是类,调用的方法与面向过程相同。

  1. <?php
  2. $host = '127.0.0.1';
  3. $username = 'root';
  4. $password = '123456';
  5. $dbName = "test";
  6. //mysqli操作mysql数据库(面向对象风格)
  7. //1,创建mysqli对象
  8. $mysqli = new MySQLi($host,$username,$password,$dbName);
  9. //验证是否ok
  10. if($mysqli->connect_error){
  11. die("连接失败! ".$mysqli->connect_error);
  12. }
  13. $mysqli->query("set names utf-8");
  14. //2,操作数据库(发送sql)
  15. $sql = "select * from user1";
  16. //$res是结果集.mysqli result
  17. $res = $mysqli->query($sql);
  18. //3,处理结果
  19. while($row = $res->fetch_assoc()){
  20. foreach($row as $key=>$val){
  21. echo "--$val";
  22. }
  23. echo "<br/>";
  24. }
  25. //4,关闭资源
  26. //释放资源
  27. $res->free();
  28. //关闭连接
  29. $mysqli->close();
  30. ?>

5,程序中的$res用于代表Sql语句的执行结果

① 如果执行的是dml语句,则返回bool;

② 如果执行的是dql语句,则返回查询结果MySQLi_Result结果集对象;

6,从mysqli result取出查询的结果有如下方式,推荐使用前两种方式,效率高。

① mysqli_result::fetch_assoc

② mysqli_result::fetch_row

③ mysqli_result::fetch_array

④ mysqli_result::fetch_object

7,数据库连接是非常稀有的资源,我们使用原则是晚创建、早释放。mysqli的面向对象特性对数据库进行增删改操作。操作过程中如果对应数据库的string类型,要求我们用''包括;如果对应数据库的数值型,则可以用''包括,也可以不用。

  1. <?php
  2. header("Content-type:text/html;charset=utf-8");
  3. //mysqli操作mysql数据库(面向对象风格)
  4. //1,创建mysqli对象
  5. $mysqli = new MySQLi("127.0.0.1","root","123456","test");
  6. //验证是否ok
  7. if($mysqli->connect_error){
  8. die("连接失败! ".$mysqli->connect_error);
  9. }
  10. //2,操作数据库(发送sql)
  11. //$sql = "insert into user1 (name,password,email,age) VALUES ('小红',md5('123456'),'xiaohong@126.com',9)";
  12. //$sql = "delete from user1 where id = 3";
  13. $sql = "update user1 set name = '小花', password = md5('120987'),email='757499089@qq.com',age = 20 where id = 4";
  14. //$res是结果集.mysqli result
  15. $res = $mysqli->query($sql);
  16. if(!$res){
  17. echo "操作失败".$mysqli->error;
  18. }else{
  19. if($mysqli->affected_rows > 0){
  20. echo "执行成功!";
  21. }else{
  22. echo "没有数据表没有变化!";
  23. }
  24. }
  25. //4,关闭资源
  26. //关闭连接
  27. $mysqli->close();

php数据库编程---mysqli扩展库的更多相关文章

  1. php数据库编程---mysql扩展库

    1, Java有一种方式操作数据库, PHP有三种方式来操作mysql数据库.(1)mysql扩展库:(2)mysqli扩展库:(3)pdo: 2, mysql扩展库和mysql数据库区别 3, my ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    //预编译演示 //1,创建mysqli对象 $mysqli=new mysqli("localhost","root",""," ...

随机推荐

  1. java算法 第七届 蓝桥杯B组(题+答案) 10.压缩变换

    10.压缩变换  (程序设计) 小明最近在研究压缩算法.他知道,压缩的时候如果能够使得数值很小,就能通过熵编码得到较高的压缩比.然而,要使数值很小是一个挑战. 最近,小明需要压缩一些正整数的序列,这些 ...

  2. siebel简介

    定义公司架构.描述S应用架构.安装应用.配置S.自动化的业务规则.数据整合.不同环境如何整合. 一.介绍CRM 销售.Callcenter等 允许管理客户和联系人. 二.Using the web c ...

  3. 小程序本地资源无法通过 css 获取

    background-image:可以使用网络图片,或者 base64,或者使用<image/>标签

  4. Linux系统中当前路径不加入PATH的原因

    主要是出于安全的考虑,由于系统默认是允许所有人在/tmp下写入任何文件的,万一有居心不良的用户或者黑客入侵到计算机,并在/tmp下面埋下木马,名字为ls,当用户用root身份登录后,到/tmp目录执行 ...

  5. linux系统如何更改文件权限

    一. 更改文件9个属性:chmod 用这个命令修改文件属性有两种方式:数字或者符号 1. 数字类型改变文件权限 chmod (1)类unix系统的文件有9个属性分别是owner/group/other ...

  6. Weblogic10.3.6部署解决CXF webService 调用报错: “Cannot create a secure XMLInputFactory”

    一,解决步骤 1.添加jar包 stax2-api-3.1.4.jar woodstox-core-asl-4.4.1.jar 2.编写监听器 package com.neusoft.cxf.list ...

  7. dpdk中log的使用方法

    1 log简介    dpdk中通过log系统记录相关的日志信息,每一条日志除日志内容外,还有两个附加信息,log级别和log类型.开发人员可根据级别和类型对日志信息进行过滤,只记录必要的日志.1.1 ...

  8. Openssl s_client命令

    一.简介 s_client为一个SSL/TLS客户端程序,与s_server对应,它不仅能与s_server进行通信,也能与任何使用ssl协议的其他服务程序进行通信 二.语法 openssl s_cl ...

  9. Python将阿拉伯数字转化为中文大写-乾颐堂

    利用Python将阿拉伯数字转化为中文大写,其实最麻烦的地方就是中间空多个0的问题,这种情况下,采用拆分法则,将一个大数字,先拆分成整数部分和小数部分,再对整数部分按照仟.万.亿.兆分位拆分为四个字符 ...

  10. struts2标签使用详解

    Struts2常用标签总结一 介绍1.Struts2的作用 Struts2标签库提供了主题.模板支持,极大地简化了视图页面的编写,而且,struts2的主题.模板都提供了很好的扩展性.实现了更好的代码 ...