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. java 蓝桥杯算法提高 _2最大最小公倍数

    解题思路: 1. n是奇数,那就最大的三个数相乘2. n是偶数,得分两种情况了, ①如果n不是3的倍数,那就s=n*(n-1)*(n-3)---n与n-2同为偶数,故排除一个n-2: ②n是3的倍数, ...

  2. UV-Sprite动画

    [UV-Sprite动画] 下文以单行Sprite纹理作为动画贴图.首先需要输入纹理宽度.Sprint数量.速度: 计算每个Sprite的像素宽与UV宽: 根据_Time,计算当前显示第几个Sprit ...

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

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

  4. 【POJ2151】Check the difficulty of problems

    题意 某场比赛有M道问题,T支队伍,和数字N给出每支队伍解决每道问题的概率. 问这场比赛满足下面两个条件的概率 1.每支队伍至少做出一道题 2.冠军队至少做出N道题. 分析 条件2是不是可以转化为 至 ...

  5. MySQL5.6.35部署

    1.下载软件 [root@localhost src]# wget -q http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glib ...

  6. Jedis连接Redis三种模式

    这里说的三种工作模式是指: 1.单机模式 2.分片模式 3.集群模式(since 3.0) 说明图详见以下: 使用单机模式连接: private String addr="192.168.1 ...

  7. sscanf高级用法级正则表达式

    sscanf高级用法级正则表达式  摘自:https://www.cnblogs.com/bluestorm/p/6864540.html sscanf与scanf类似,都是用于输入的,只是后者以屏幕 ...

  8. JavaScript获取主流手机系统和型号

    <script src="http://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script> < ...

  9. 4.4.6 数组也能无锁:AtomicIntegerArray

    数组也可以实现cas操作,有以下几个类以及用法如下: public class AtomicTntegerArrayTest { public static void main(String[] ar ...

  10. SQL获取本周,上周,本月,上月第一天和最后一天[注:本周从周一到周天]

    DECLARE @ThisWeekStartTime NVARCHAR(100),@ThisWeekEndTime NVARCHAR(100),--本周 @LastWeekStartTime NVAR ...