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进行连接

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

mysql进行连接

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

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

mysqli

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

mysql

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

(1.3)mysqli实例如下:

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

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

<?php
$host = '127.0.0.1';
$username = 'root';
$password = '123456';
$dbName = "test";
//mysqli操作mysql数据库(面向对象风格)
//1,创建mysqli对象
$mysqli = new MySQLi($host,$username,$password,$dbName);
//验证是否ok
if($mysqli->connect_error){
die("连接失败! ".$mysqli->connect_error);
}
$mysqli->query("set names utf-8");
//2,操作数据库(发送sql)
$sql = "select * from user1";
//$res是结果集.mysqli result
$res = $mysqli->query($sql);
//3,处理结果
while($row = $res->fetch_assoc()){
foreach($row as $key=>$val){
echo "--$val";
}
echo "<br/>";
}
//4,关闭资源
//释放资源
$res->free();
//关闭连接
$mysqli->close();
?>

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类型,要求我们用''包括;如果对应数据库的数值型,则可以用''包括,也可以不用。

<?php
header("Content-type:text/html;charset=utf-8");
//mysqli操作mysql数据库(面向对象风格)
//1,创建mysqli对象
$mysqli = new MySQLi("127.0.0.1","root","123456","test");
//验证是否ok
if($mysqli->connect_error){
die("连接失败! ".$mysqli->connect_error);
}
//2,操作数据库(发送sql)
//$sql = "insert into user1 (name,password,email,age) VALUES ('小红',md5('123456'),'xiaohong@126.com',9)";
//$sql = "delete from user1 where id = 3";
$sql = "update user1 set name = '小花', password = md5('120987'),email='757499089@qq.com',age = 20 where id = 4";
//$res是结果集.mysqli result
$res = $mysqli->query($sql);
if(!$res){
echo "操作失败".$mysqli->error;
}else{
if($mysqli->affected_rows > 0){
echo "执行成功!";
}else{
echo "没有数据表没有变化!";
}
}
//4,关闭资源
//关闭连接
$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. web前端整套面试题(二)--今日头条面试题

    12道单选,7道不定项选择,2道编程题 一.单选(12题) 1.[单选题]在HTML中,( )可以在网页上通过链接直接打开邮件客户端发送邮件. A.<a href=”telnet:ming.zh ...

  2. spring bean单例注入与用单例模式通过class.getinstance()区别?

    1.action的某个方法中,用以下代码获得redis单例实例 RedisDelegate redisDelegate = RedisDelegate.getInstance(); redisDele ...

  3. Professional C# 6 and .NET Core 1.0 - Chapter 43 WebHooks and SignalR

    本文内容为转载,重新排版以供学习研究.如有侵权,请联系作者删除. 转载请注明本文出处:Professional C# 6 and .NET Core 1.0 - Chapter 43 WebHooks ...

  4. 144. Binary Tree Preorder Traversal (Tree, Stack)

    Given a binary tree, return the preorder traversal of its nodes' values. For example: Given binary t ...

  5. POJ 3017 DP + 单调队列 + 堆

    题意:给你一个长度为n的数列,你需要把这个数列分成几段,每段的和不超过m,问各段的最大值之和的最小值是多少? 思路:dp方程如下:设dp[i]为把前i个数分成合法的若干段最大值的最小值是多少.dp转移 ...

  6. UITextView设置占位文字

    这里只介绍一种,这种方便扩展,可以占位文字颜色. 我们继承一个UITextView: #import <UIKit/UIKit.h> @interface MyTextView : UIT ...

  7. STM32F4通用定时器

    1.基本原理 三种定时器区别 通用定时器功能特点描述 在这里只用输入捕获事件也能获取脉冲个数同时可以只使用它来获取脉冲宽度,比如当捕获到上升沿,马上进入中断,把计数器的值置零,然后等待捕获下降沿的到来 ...

  8. Perl 学习笔记-正则表达式处理文本

    1.使用正则表达式替换文本  s///  s/<pattern>;/<replacement>;/ 如果匹配失败, 则什么也不会发生, 变量也不受影响. 返回布尔值, 替换成功 ...

  9. 编写高质量代码改善C#程序的157个建议——建议123:程序集不必与命名空间同名

    建议123:程序集不必与命名空间同名 程序集一般会和命名空间同名,但这并不是必须的.事实上,不同名的命名空间和程序集是很常见的. 程序集表示的是一种物理上的分组,而命名空间是逻辑上的分组,两者没有必然 ...

  10. springDao的jdbctemplate

    pom文件 <?xml version="1.0" encoding="UTF-8"?><project xmlns="http:/ ...