- 浏览: 347918 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (354)
- Flash | as3 (53)
- AIR | Starling (46)
- Android (55)
- Java (10)
- C++ (6)
- PHP (43)
- IOS (9)
- Unity3D (2)
- cocos2d-x (1)
- OpenGL (2)
- WebGL (3)
- Server (4)
- MemCache (13)
- MySql (2)
- NoSql (2)
- PhoneGap (13)
- jQuery | jQuery Mobile (14)
- javaScript | html5 | css3 (14)
- Linux (1)
- Box2D (2)
- SmartFox (1)
- Ruby (0)
- Python (2)
- Golang (11)
- Redis (1)
- 开源项目 (6)
- 游戏策划 (1)
- 云平台 (2)
- 项目管理 (6)
- 听见月光 (32)
最新评论
-
kenkao:
http://www.linuxidc.com/Linux/2 ...
解决idea编译时resources文件夹内容不自动复制到输出路径classes的问题 -
kenkao:
http://blog.csdn.net/yanwushu/a ...
解决idea编译时resources文件夹内容不自动复制到输出路径classes的问题 -
wpy126:
你这种比较根本不公平AppCan 用了多个页面,jqm内容都 ...
AppCan VS PhoneGap - 对比两大移动开发平台 -
kenkao:
zs12593 写道这个,这个
这里只是转载,建议看一下原文, ...
android游戏开发框架libgdx环境搭建 -
zs12593:
这个,这个
android游戏开发框架libgdx环境搭建
转自:http://hudeyong926.iteye.com/blog/902785
<?php /** * Mysqli类 * * @author 废墟 * @version v1.0 2009-08-18 * @link http://anerg.cn/ */ class db_mysqli { protected $mysqli; protected $sql; protected $rs; protected $query_num = 0; protected $fetch_mode = MYSQLI_ASSOC; protected $cache_dir = './cache/'; protected $cache_time = 1800; public function __construct($dbhost, $dbuser, $dbpass, $dbname) { $this->mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname); if(mysqli_connect_errno()) { $this->mysqli = false; echo '<h2>'.mysqli_connect_error().'</h2>'; die(); } else { $this->mysqli->set_charset("utf8"); } } public function __destruct() { $this->free(); $this->close(); } protected function free() { @$this->rs->free(); } protected function close() { $this->mysqli->close(); } protected function fetch() { return $this->rs->fetch_array($this->fetch_mode); } protected function getQuerySql($sql, $limit = null) { if (@preg_match("/[0-9]+(,[ ]?[0-9]+)?/is", $limit) && !preg_match("/ LIMIT [0-9]+(,[ ]?[0-9]+)?$/is", $sql)) { $sql .= " LIMIT " . $limit; } return $sql; } protected function get_cache($sql,$method) { include_once './cache.php';//若框架中使用__autoload(),这里可以不用加载文件 $cache = new cache($this->cache_dir,$this->cache_time); $cache_file = md5($sql.$method); $res = $cache->get_cache($cache_file); if(!$res) { $res = $this->$method($sql); $cache->set_cache($cache_file, $res); } return $res; } public function query_num() { return $this->query_num; } public function set_cache_dir($cache_dir) { $this->cache_dir = $cache_dir; } public function set_cache_time($cache_time) { $this->cache_time = $cache_time; } public function query($sql, $limit = null) { $sql = $this->getQuerySql($sql, $limit); $this->sql = $sql; $this->rs = $this->mysqli->query($sql); if (!$this->rs) { echo "<h2>".$this->mysqli->error."</h2>"; die(); } else { $this->query_num++; return $this->rs; } } public function getOne($sql) { $this->query($sql, 1); $this->fetch_mode = MYSQLI_NUM; $row = $this->fetch(); $this->free(); return $row[0]; } public function get_one($sql) { return $this->getOne($sql); } public function cache_one($sql) { $sql = $this->getQuerySql($sql, 1); return $this->get_cache($sql, 'getOne'); } public function getRow($sql, $fetch_mode = MYSQLI_ASSOC) { $this->query($sql, 1); $this->fetch_mode = $fetch_mode; $row = $this->fetch(); $this->free(); return $row; } public function get_row($sql, $fetch_mode = MYSQLI_ASSOC) { return $this->getRow($sql); } public function cache_row($sql) { $sql = $this->getQuerySql($sql, 1); return $this->get_cache($sql, 'getRow'); } public function getAll($sql, $limit = null, $fetch_mode = MYSQLI_ASSOC) { $this->query($sql, $limit); $all_rows = array(); $this->fetch_mode = $fetch_mode; while($rows = $this->fetch()) { $all_rows[] = $rows; } $this->free(); return $all_rows; } public function get_all($sql, $limit = null, $fetch_mode = MYSQLI_ASSOC) { return $this->getAll($sql); } public function cache_all($sql, $limit = null) { $sql = $this->getQuerySql($sql, $limit); return $this->get_cache($sql, 'getAll'); } public function insert_id() { return $this->mysqli->insert_id(); } public function escape($str) { if(is_array($str)) { foreach($str as $key=>$val) { $str[$key] = $this->escape($val); } } else { $str = addslashes(trim($str)); } return $str; } } //用法 $db = new db_mysqli('localhost', 'root', 111222, 'dict'); $db->set_cache_time(10); $db->set_cache_dir('./cache/sql/'); $sql = "select * from words order by word_id limit 10,10"; $res1 = $db->get_all($sql); $res2 = $db->cache_all($sql); echo $db->query_num(),'<br>'; ?>
mysqli类的对象主要控制PHP和MySQL数据库服务器之间的连接、选择数据库、向MySQL服务器发送SQL语句,以及设置字符集等,这些 任务都是通过该类中声明的构造方法、成员方法和成员属性完成的。在表13-1和表13-2两个表格中,分别列出了mysqli类中声明的成员方法和成员属 性。
表13-1 mysqli类中的成员方法(共33个)
成员方法名 |
描 述 |
__construct() |
构造方法,用于创建一个新的mysqli对象,也 可以建立一个连接 |
autocommit() |
开启或关闭数据库修改自动提交 |
change_user |
改变了数据库连接所指定的用户 |
character_set_name() |
返回数据库连接默认的字符集 |
close() |
关闭先前打开连接 |
commit() |
提交当前的事务 |
connect() |
打开一个新的连接到MySQL数据库服务器 |
debug() |
执行调试操作 |
dump_debug_info() |
转储调试信息 |
get_client_info() |
返回客户端版本 |
get_host_info() |
返回一个字符串代表的连接使用类型, 如:Localhost via UNIX socket |
get_server_info() |
返回MySQL服务器的版本,如:4.1.2-alpha-debug |
get_server_version() |
返回整数形式的MySQL服务器版本,如40102 |
init() |
初始化MySQLi并返回一个资源 |
info() |
检索有关最近执行的查询 |
kill() |
要求服务器去杀死一个MySQL线程 |
续表
成员方法名 |
描 述 |
multi_query() |
执行多个查询语句 |
more_results() |
从多查询语句中检查是否有任何更多的查询结果 |
Next_result() |
从当前执行的多查询中读取下一个结果 |
options() |
设置选项 |
ping() |
如果没有连接,ping一台服务器连接或重新连接 |
prepare() |
准备一个SQL语句的执行,返回mysqli_stmt对象 |
query() |
与数据库的任何交互都是通过查询进行的, 该方法向数据库发送查询来执行 |
real_connect() |
试图打开一个连接到MySQL数据库服务器 |
escape_string() |
转义特殊字符的字符串,用于在一个SQL语句, 并考虑到当前的字符集的连接 |
rollback() |
回滚当前的事务 |
select_db() |
为数据库查询选择默认的数据库 |
set_charset() |
设置默认客户端字符集 |
ssl_set() |
使用SSL用于建立安全连接 |
stat() |
获取当前的系统状态 |
stmt_init() |
初始化一个声明,并返回一个mysqli_stmt对象 |
store_result() |
从最后查询中转让结果集 |
thread_safe() |
是否考虑返回安全的线程 |
表13-2 mysqli类中的成员属性(共13个)
成员属性名 |
描 述 |
$affected_rows |
在前一个MySQL操作中获取影响的行数 |
$client_info |
MySQL客户端版本为一个字符串返回 |
$client_version |
MySQL客户端版本为一个整数返回 |
$errno |
返回最近函数调用的错误代码 |
$error |
返回最近函数调用的错误信息字符串 |
$field_count |
传回最近查询获取的列数 |
$host_info |
返回一个字符串的连接类型使用 |
$info |
检索有关最近执行的查询 |
$insert_id |
返回使用最后查询自动生成的编号 |
$protocol_version |
返回MySQL协议使用的版本 |
$sqlstate |
返回一个字符串包含SQLSTATE错误码的最后一个错 |
$thread_id |
为当前连接返回线程ID |
$warning_count |
返回前一个SQL语句执行过程中产生的警告数量 |
上面两个表格列出的mysqli类全部的成员属性和成员方法,当成功创建该类对象以后,就可以调用对象中的成员完成上面两个表格所列出来的功能。下面介绍mysqli类中常见的成员应用。
- php_class.rar (3.1 KB)
- 下载次数: 3
发表评论
-
淘宝开放平台SDK对接
2017-11-28 15:38 682http://blog.csdn.net/papalian ... -
基于UCenter关联第三方网站与Discuz用户
2017-11-10 16:57 762https://mo2g.com/view/106/ ... -
IIS访问要求输入用户名密码
2017-10-23 14:08 11901. 打开IIS,右击网站--->属性---> ... -
关于”要执行请求的操作,WordPress需要访问您网页服务器的权限”
2017-10-14 15:50 564http://blog.csdn.net/qq_157108 ... -
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
2017-04-20 15:12 562http://www.jb51.net/artic ... -
简单的C#&PHP对称加解密
2017-04-01 10:11 394byte[] ctxbytes = Syst ... -
Windows下安装并设置Redis
2017-01-06 09:48 509http://blog.csdn.net/renfufei/ ... -
深入理解require与require_once与include以及include_once的区别
2016-08-18 15:26 373http://www.jb51.net/article/ ... -
php-redis中文参考手册_zset
2016-07-08 10:05 578http://my.oschina.net/cniiliuq ... -
C#兼容PHP的GZip算法
2016-05-10 15:22 833// php GZip压缩 gzencode($data) ... -
C#兼容PHP的MD5算法
2016-05-10 15:18 510md5($str) public sta ... -
怎样增加phpmyadmin导入文件上限
2015-11-27 10:11 592http://jingyan.baidu.com/art ... -
为PHP添加swoole异步并行扩展
2015-08-12 15:17 935为PHP添加swoole异步并行扩展 ... -
PHP-redis中文文档
2015-07-28 14:21 743PHP-redis中文文档 phpredis是p ... -
PHP中include和require的区别详解
2015-07-25 11:15 536PHP中include和require的区别详解 ... -
Win2003 IIS7配置PHP图解(IIS7+PHP_5.2.17/PHP_5.3.5)
2015-05-08 17:31 2http://www.jb51.net/article/5 ... -
c#保留小数点后位数的方法
2015-04-20 16:22 779Double dValue = 95 ... -
C# to PHP base64 encode/decode
2015-03-31 12:49 1110http://stackoverf ... -
php&.net对称压缩解压缩探讨
2015-03-25 15:42 567http://blog.csdn.net/michaell_ ... -
在C#中获取如PHP函数time()一样的时间戳
2015-01-31 14:03 763c#中没有象PHP一样的time()时间戳函数,但有Date ...
相关推荐
mysqli基本操作类,面向对象,
介绍php封装的mysqli类,结合实例形式分析了php针对mysqli操作类的定义与使用技巧,掌握满足单例模式的必要条件 (1)私有的构造方法-为了防止在类外使用new关键字实例化对象 (2)私有的成员属性-为了防止在类外引入这个...
在PHP7中,MySQL数据库操作通常使用mysqli或PDO_MySQL扩展进行,但对于新手来说,创建一个封装好的数据库操作类可以简化很多工作。这个实例主要介绍如何构建一个PHP7中的MySQL数据库操作类,以实现连接、查询、插入...
介绍php封装的mysqli类,结合实例形式分析了php针对mysqli操作类的定义与使用技巧,掌握满足单例模式的必要条件 (1)私有的构造方法-为了防止在类外使用new关键字实例化对象 (2)私有的成员属性-为了防止在...
创建 MYSQLI 对象是使用 MYSQLI 类操作 MYSQL 数据库的第一步。开发者可以使用 new 关键字创建 MYSQLI 对象,并指定 MYSQL 数据库的连接参数。 6. 执行 SQL 语句 执行 SQL 语句是使用 MYSQLI 类操作 MYSQL 数据库的...
在本案例中,数据库操作类基于MySQLi构建,通过封装数据库连接、查询等操作,使代码更加简洁、易于维护。 缓存技术主要用于存储经常访问但变化不频繁的数据,以减少从慢速持久存储(如数据库)中读取数据的时间。...
以上的例子展示了如何通过封装的mysqli操作类进行基本的数据库操作。在实际开发中,还可以根据需要对这个类进行扩展,增加更多自定义的方法来满足特定的业务需求。比如可以增加插入数据(`db_insert`)、删除数据(`db_...
数据库操作在IT行业中是至关重要的,特别是在Web开发领域。MySQL、mysqli和PDO是PHP中用于与MySQL数据库交互的三种主要接口。这篇博文将探讨这些接口的特性、优缺点以及如何在实际项目中选择合适的工具。 MySQL是最...
首先,我们创建一个名为`DBUtil`的数据操作类,它包含了数据库连接的相关属性,如主机名(`$host`)、用户名(`$username`)、密码(`$password`)、数据库名(`$dbname`)以及连接对象(`$conn`)。在类的构造函数中,我们...
PHP 中基于 MySQLi 类操作 MySQL 数据库的实现 在当前网络技术飞速发展的时代,无论是 PC 端还是移动端,基本上所有网站都是动态网站。动态网站具有广泛的应用对象,而 PHP 技术在功能需求和设计领域具有规范性和...
mysqli类提供了丰富的函数,如`query()`用于执行SQL查询,`connect_errno`和`connect_error`检查连接是否成功,`real_escape_string()`用于防止SQL注入。 总的来说,MySQL和mysqli在PHP开发中提供了强大的数据库...
在本章中,我们将深入探讨如何使用MySQL Improved Extension(Mysqli)来操作数据库。Mysqli是PHP中的一个扩展,专为MySQL数据库设计,提供了一种更高效、更安全的方式来执行SQL查询和管理数据库。 首先,Mysqli...
MYSQLI类支持非阻塞和异步操作,允许在等待数据库响应的同时执行其他任务,提高了应用的响应速度。 10. **性能优化** MYSQLI类还提供了性能优化选项,如启用或禁用缓冲、使用连接池等,以适应不同场景下的需求。 ...
介绍一个简单的php-mysql操作类,数据库连接和设置,执行操作,显示信息,取得数据集的某个值,取得数据集的某个值,取得数据集的行数,循环读取数据,最后一次插入纪录的id值,插入任意数据,修改数据,删除数据,...
2. 面向对象API:MySQLi也支持面向对象的方式,通过创建mysqli类的对象来操作数据库。例如,$conn = new mysqli('host', 'username', 'password', 'database')用于建立连接,$conn->query($sql)执行SQL查询,$result...
在这个“php中mysql数据库操作类.zip”压缩包中,很可能包含了一个基于MySQLi或PDO实现的自定义数据库操作类。 一个基础的PHP MySQL数据库操作类通常包括以下组件: 1. **连接函数**:用于建立与MySQL服务器的连接...