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. linux: cat more less tail head查看文件内容

  2. 19-字符切割函数c++模板

    https://www.cnblogs.com/stonebloom-yu/p/6542756.html #include <cstring> #include <cstdio> ...

  3. Openssl ec命令

    一.简介 椭圆曲线密钥处理工具 二.语法 openssl ec [-inform PEM|DER] [-outform PEM|DER] [-in filename] [-out filename] ...

  4. 搭建自己的MQTT服务器

    搭建自己的MQTT服务器 物联网电子世界 百家号08-2903:04 MQTT协议是广泛应用的物联网协议,使用测试MQTT协议需要MQTT的代理.有两种方法使用MQTT服务,一是租用现成的MQTT服务 ...

  5. mysql的explain用法

    Mysql—explain的参数详解及用法 EXPLAIN 的每个输出行提供一个表的相关信息,并且每个行包括下面的列: 项 说明 id MySQL Query Optimizer 选定的执行计划中查询 ...

  6. Redis 数据库学习

    安装(mac) 使用homebrew安装,命令是:brew install redis. 安装完成后启动命令:brew services start redis. 使用命令redis-cli进入red ...

  7. save is not valid without active transaction

    org.hibernate.HibernateException: save is not valid without active transaction at org.hibernate.cont ...

  8. bt协议详解 基础篇(上)

    bt协议详解 基础篇(上) 最近开发了一个免费教程的网站,产生了仔细了解bt协议的想法,所以写了这一篇文章,后续还会写一些关于搜索和索引的东西,都是在开发这个网站的过程中学习到的技术,敬请期待. 1 ...

  9. Locality preserving hashing for fast image search: theory and applications

    Is there any Java library that provides an implementation (or several) of a Locality Preserving Hash ...

  10. servlet及xml文件处理流程

    启动项目----会找到web.xml文件---跳转到默认jsp----页面重定向----转到xml.文件下 通过<servlet-mapping>映射找到<servlet>标签 ...