mysqli扩展用来访问MySQL 4.1或更高版本提供的功能。关于mysql,详情看www.mysql.com。
mysqli扩展和持久连接
持久连接支持是在PHP 5.3的mysqli扩展中被介绍的。对持久连接的支持已经表现在PDO MySQL和ext/mysql里。持久连接背后的想法是,一个客户端进程可以重复使用一个 在客户端进程和数据库之间的连接,而不是重复的被创建和销毁。这样可以减少创建新连接的消耗,因为未被使用的连接被缓存,并准备被使用。
与mysql扩展不同,mysqli不提供单独的的函数去打开持久连接。为了打开一个持久连接,你必须在连接参数hostname前面加 p: 。
持久连接的问题在于,他们可以被客户端置于一个不可预料的状态。比如,一个table lock可能被激活,接着连接意外的结束了。一个新的客户端进程重用这个持久连接,将得到同样的情况(指得到这个连接的时候,table lock就处于激活状态)。新客户端进程需要完成所有清理工作,在正常使用这个持久连接之前,这样会加重程序员的负担。
mysqli扩展的持久连接提供了内置的清理控制代码(cleanup handling code)。mysqli执行以下清理动作:
1.Rollback active transactions(活动回滚激事务)
2.Close and drop temporary tables(关闭和取消临时表)
3.Unlock table(解锁表)
4.Reset session variables(重置会话变量)
5.Close prepared statements(always happen with PHP) (关闭prepared语句,经常发生在PHP中)
6.Close handler(关闭处理程序)
7.Release lock acquired with GET_LOCK() (释放通过GET_LOCK()获得的锁)
这确保持久连接在从连接池获得的时候是clean状态(初始状态clean)
mysqli扩展自动做这个清理工作,通过调用C-API函数mysql_change_user()
自动清理特性有好处也有坏处。好处是程序员不用担心自己写清理代码,因为mysqli会自动调用。但是,坏处是哪些代码可能有点慢,因为这段清理代码每次都要运行,当从连接吃返回一个连接时。
可以在编译PHP时加上MYSQLI_NO_CHANGE_USER_ON_PCONNECT来关掉自动清理代码。
note:mysqli扩展支持持久连接,通过mysql native driver或者mysql client library。
预定义常量,编译选项,参照:http://www.php.net/manual/en/mysqli.constants.php
这里有几个类:
MySQLi,表示一个PHP和Mysql之间的连接,详情:http://www.php.net/manual/en/class.mysqli.php
MySQLi_STMT,表示一个prepared语句,详情:http://www.php.net/manual/en/class.mysqli-stmt.php
MySQLi_Result,表示一个从数据库查询获得的结果集,详情:http://www.php.net/manual/en/class.mysqli-result.php
MySQLi_Driver,mysqli驱动,详情:http://www.php.net/manual/en/class.mysqli-driver.php
MySQLi_Warning,表示一个mysql警告,详情:http://www.php.net/manual/en/class.mysqli-warning.php
最后有一些弃用的函数:http://www.php.net/manual/en/ref.mysqli.php
分享到:
相关推荐
PDO和mysqli的区别描述,很好的资料啊,推荐大家下载学习。
介绍php缓存数据功能的mysqli类,若框架中使用__autoload(),可以不用加载文件,需要的朋友可以学习参考,如果小伙伴们有更好的方案可以拿过来与我们一起学习分享。
相信原来在开始学习php的时候,很多人使用的数据库...学习mysqli扩展势在必行了。 相对于mysql扩展,mysqli扩展支持面向对象和面向过程两种方式,支持预处理,支持事务处理,而且速度比mysql速度更快。本篇将主要介绍
本篇文章介绍了php中mysqli_get_server_version()方法的定义和用法,希望对正在学习MySQL和PHP的小伙伴有帮助! 定义和用法 mysqli_get_server_version() 函数将 MySQL 服务器版本作为整数返回。 MySQL 服务器版本将...
主要介绍了PHP以mysqli方式连接类完整代码实例,对于学习和了解mysqli都有很大的帮助,需要的朋友可以参考下
在我们开发php时,可能有人已经学习了php数据库的连接交互,也可能正准备学习。如今,按照php的发展趋势,mysql扩展已经停止开发,在以后的发展中可能被淘汰,如mysql->query(),mysql->connect()等以后可能就无法...
本文实例讲述了PHP使用Mysqli类库实现完美分页效果的方法。分享给大家供大家参考,具体如下: 本篇文章是基于的是我的上篇文章《PHP数据库操作之基于Mysqli的数据库操作...建议:您在看本篇文章之时,请确保您已学习过
需要学习基础知识。代码如下: 复制代码 代码如下:<?php $mysqli = new MySQLi(“localhost”,”root”,”123456″,”liuyan”); if(!$mysqli){ die($mysqli->error); } function showTable($mysqli,$table_...
[PHP_教學][Laravel][WordPress]_#30._利用PHP讀取MySQL資料庫並顯示出資料(mysqli)
在学习1. 开启PHP的API支持 (1)首先修改您的php.ini的配置文件。 查找下面的语句: ;extension=php_mysqli.dll 将其修改为: extension=php_mysqli.dll (2)重新启动Apache/IIS,即可。 (3)说明:PHP需要...
主要给大家介绍了关于mysqli扩展无法在PHP7下升级问题的解决方法,文中通过示例代码介绍的非常详细,对大家学习或者使用PHP7具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
新手学习,php7中mysql数据库操作类实例,非常清晰易懂
博客内资源案例文件,提供下载链接用途,仅供学习使用
用作曲家安装如果使用作曲家,则可以运行命令来克隆此项目 composer require luudoanh/class-db-mysqli初始化通过以下方式初始化基类 <?phpuse App \ Mysql ;$ dbObject = new MysqlConnection ( 'hostname' , '...
基于PHP、MySQL等技术构建的web系统,框架,PHP学习,课程设计作业,可用于毕业设计,源码项目,可直接运行,实测! 基于PHP、MySQL等技术构建的web系统,框架,PHP学习,课程设计作业,可用于毕业设计,源码项目,...
mysqli扩展库 69 一.查询数据库中的表 69 二.释放资源的方式 69 三.增删该查类 69 四.预编译 70 mail 71 ZendFramework 73 快速体验 73 修改数据 74 增加数据 74 查询数据 74 memcached 76 telnet操作 ...
复制代码 代码如下:<?phpclass db { private $mysqli; //数据库连接 private $options; //SQL选项 private $tableName;... } private function db() { $this->mysqli = new mysqli ( ‘localhost’,
这个项目使用 PHPExcel,一个纯粹内置的库,一个带前端样式的小实例,可用于学习和在项目中实用。 教程 1.导入数据库文件sql.sql文件 2.修改index.php中$connect = mysqli_connect("localhost", "root", "root", ...
以及SQL语法、工具、选项、API应用指南,最大限度地帮助读者更快地学习和掌握MySQL数据库系统的设计和使用。本书覆盖了MySQL 5.0,讨论了新的程序设计接口(如PHP 5里的mysqli)和新的系统管理工具。