当前位置:  编程技术>php

PHP数据库操作之基于Mysqli的数据库操作类库

    来源: 互联网  发布时间:2014-08-26

    本文导语:  此类库简单、易用,便于你自己修改和对功能的改善,能解决大部分 PHP 项目中执行的 SQL 操作。 初步工作 首先,请大家下载这个类库 M.class.php 再下载一个 Mysqli 连接数据库的类库 MysqliDb.class.php(打包下载地址)  新建一个 incl...

此类库简单、易用,便于你自己修改和对功能的改善,能解决大部分 PHP 项目中执行的 SQL 操作。

初步工作

首先,请大家下载这个类库 M.class.php 再下载一个 Mysqli 连接数据库的类库 MysqliDb.class.php(打包下载地址) 
新建一个 includes 的文件夹,将下载下来的两个 class 文件,放进去。
然后,请你在项目下创建一个 test.php 文件。注:UTF-8 文件格式

请先根据你机器的情况,填充以下代码,用于连接数据库:

代码如下:

header('Content-Type:text/html;Charset=utf-8');
define('ROOT_PATH', dirname(__FILE__));
define('DB_HOST', 'localhost'); //数据库服务器地址
define('DB_USER', 'root');  //数据库用户名
define('DB_PWD', '×××');//数据库密码
define('DB_NAME', '×××');  //数据库名称
define('DB_PORT', '3306');  //数据库端口
function __autoload($className) {
    require_once ROOT_PATH . '/includes/'. ucfirst($className) .'.class.php'; //自动加载 class 文件
}

好了,上面的这些操作都是初步工作,下面正式进入类库的讲解。

类库讲解

首先,我们得实例化 M.class.php,实例化很简单:

代码如下:

$m = new M(); //这步操作代表 M.class.php 中的所有功能都封装在了变量 $m 中

注:
1、M类库中的方法参数说明,请到 M.class.php 文件中看详细的注释,这里不再进行叙述。建议在学习的时候,对照着看下文件中的参数即注释。
2、讲解代码中用到的数据库结构为:

代码如下:

CREATE TABLE `user` (
  `id` int(8) unsigned NOT NULL auto_increment,
  `name` varchar(50) default NULL,
  `email` varchar(100) default NULL,
  `age` smallint(3) default NULL,
  `class_id` int(8) default NULL,
  `commit_time` int(10) default NULL,
  PRIMARY KEY  (`id`),
  KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

代码如下:

CREATE TABLE `class` (
  `class_id` int(8) NOT NULL auto_increment,
  `class_name` varchar(100) default NULL,
  PRIMARY KEY  (`class_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

并添加一条测试数据。

3、M类库中,大部分方法都分两中类型,即:SQL方法;拼接方法,具体在实例中可以看出
4、以下称述中的 M 为 M.class.php 文件

方法1、Insert() 添加数据

Insert 方法的全部使用案例如下:

代码如下:

$m->Insert("user", null, array('焦焦', 'liruxing1715@sina.com', '23', time())); // 拼接方法:往`user`表中添加一条数据,返回值为数据库影响的行数
$m->Insert("user", null, array('焦焦', 'liruxing1715@sina.com', '23', time()), true); // 功能同上,返回 last_insert_id(插入的增长id)
$m->Insert("INSERT INTO `user` (`name`, `email`, `age`, `commit_time`) VALUES ('张小花', 'zhangxiaohua@sina.com.cn', '22', '".time()."')"); //SQL方法,返回值为数据库影响的行数
$m->Insert("INSERT INTO `user` (`name`, `email`, `age`, `commit_time`) VALUES ('张小花', 'zhangxiaohua@sina.com.cn', '22', '".time()."')", true); // 同上,返回 last_insert_id

注:Insert 方法中的第二个参数若为null,可自动获得插入表除 auto_increment 字段之外的所有字段,详情请看M源文件;若要返回值为最后插入的 ID,那么请设置 Insert 方法的最后一个参数为 true(默认是false);

方法2、Update() 修改数据

update 方法的全部使用案例如下:

代码如下:

$m->Update("user", array('name'=>'李茹茹', 'age'=>24), "id=1"); //拼接方法,修改id为1的数据的名称为“李茹茹”;年龄为“24”,其方法的返回值为受影响的行数
$m->Update("UPDATE `user` SET `name`='李茹茹', `age`=24 WHERE id = 1"); //SQL 用法,功能同上

方法3、Del() 删除数据

Del 方法的全部使用案例如下:

代码如下:

$m->Del('user', 'id=3'); //拼接方法:删除`user`表中 id 为3的数据,返回受影响的行数
$m->Del("DELETE FROM `user` WHERE id=4"); //SQL方法:删除`user`表中 id 为4的数据,返回受影响的行数
$m->Del("DELETE FROM `user` WHERE id in (10, 11, 12)"); //SQL方法:删除多条数据,删除`user`表中 id 为 10、11、12 的数据,返回受影响的行数

方法4、Total() 获取记录数,返回值都为int

Del 方法的全部使用案例如下:

代码如下:

$m->Total('user'); //拼接方法:返回 `user`表中的记录数,无条件
$m->Total('user', 'id>1'); //拼接方法:返回 `user`表中 id 大于1的记录数,有条件
$m->Total("SELECT COUNT(*) AS total FROM `user`"); //SQL方法,注:使用SQL方法,语句中必须使用 "AS total",否则会报错

方法5、IsExists() 检查数据是否存在,返回值为boolean

代码如下:

$m->IsExists('user', "`name`='焦焦'");  //拼接方法:返回`user`表中是否存在`name`为“焦焦”的数据,返回true,若不存在,返回false

方法6、InsertId() 获取表下一个添加的自动增长id,注意,这里不进行添加操作,只是获取下一个增长id

代码如下:

echo $m->InsertId('user'); //获取`user` 表下一个添加的自动增长id

方法7、GetRow() 返回单条数据,返回值为一维数组

GetRow 方法的全部使用案例如下:

代码如下:

$data = $m->GetRow("SELECT `name`,email FROM `user` WHERE id=1");  //SQL方法,返回一维数组,例如:Array ( [name] => 焦焦 [email] => liruxing1715@sina.com )
$data = $m->GetRow("SELECT u.`name`, u.email, c.class_name FROM `user` u, `class` c WHERE u.class_id=c.class_id AND u.id=1");  //SQL方法,多表查询
$data = $m->GetRow('user', '`name`,email', "id=1");  //拼接方法
$data = $m->GetRow('user as u,`class` c', 'u.`name`,u.email,c.class_name', "u.id=1 AND u.class_id=c.class_id"); //拼接方法,多表查询
$data = $m->GetRow("SELECT `name`,email FROM `user`"); //如果没有指定条件应该是显示全部信息,但是在此方法中将默认显示第一条(不推荐这么使用!!!)

$data 是查询出来的一维数组。

方法8、GetOne() 返回单个数据

GetOne 方法的全部使用案例如下:

代码如下:

$name = $m->GetOne("SELECT `name` FROM `user` WHERE id=1");  //SQL方法,返回一个字符串,例如:焦焦
$name = $m->GetOne("user", "name", "id=1");  //拼接方法,返回一个字符串,例如:焦焦

方法9、FetchAll() 返回所有记录

代码如下:

$data = $m->FetchAll("user");  //返回`user`表中的所有记录,以二维数组的形式
$data = $m->FetchAll("SELECT * FROM `user`");  //SQL 方法,功能和返回值同上
$data = $m->FetchAll("user", "name,email", "id>1", 'id DESC', '2'); //返回两条id>1的数据,只显示name,email,并且以id 为倒序排序。注:请注意该方法的最后一个参数也可以为'0,2',目的是为分页准备的,如果第一页为'0,2'的话,那么第二页就是'2,2'
//该方法也支持联表查询和多表查询,下面以联表查询为例
$data = $m->FetchAll("`user` as u LEFT JOIN `class` as c ON u.class_id=c.class_id", "u.`name`,u.email, c.class_name", "u.id=1"); //注意:该拼接方法中,ON 添加的位置


注:对于该 FetchAll 方法,后续我会写一篇使用该方法进行完美分页的文章!!请关注。

方法10、MultiQuery() 执行多条SQL语句

代码如下:

$sql = "INSERT INTO user (`name`,email, age, class_id, commit_time) VALUES ('贾花花', 'jiahuahua@sina.com.cn', '22', '1', '".time()."')"; //添加一个名叫“贾花花”的学生信息
$sql .= ";DELETE FROM `user` WHERE `name`='焦焦'"; //删除一条名叫“焦焦”的学生信息
//解释:$sql 是多条 SQL 以英文;(分号)拼接起来的
$data = $m->MultiQuery($sql); //返回为true,代表执行成功;为false,代表执行失败

类库讲解完毕

到此该类库的全部功能就讲解完毕,希望你能多看看M文件,了解其内部运行的机制。M 文件不会存在执行缓慢情况,请大家放心使用。
如果在使用过程中出现 SQL 拼接错误,类库会报出友善的错误提示。
有问题请留言,欢迎大家的批评和建议,加油!学习好运。


    
 
 

您可能感兴趣的文章:

  • php中操作memcache的类及成员列表及php下如何连接memched服务器
  • PHP实现的连贯操作、链式操作实例
  • PHP的mongodb操作类TmongoDB TmongoDB
  • PHP互操作性框架 PPI
  • php 判断服务器操作系统的类型
  • PHP数据库操作类 ezSQL
  • PHP PDO数据库类update操作
  • PHP PDO数据库类delete操作
  • PHP PDO数据库类select操作
  • PHP PDO数据库类的insert操作
  • php中操作memcached缓存进行增删改查数据的实现代码
  • php中php-fpm重启、停止操作命令
  • php根据操作系统转换文件名大小写的方法
  • php实现执行某一操作时弹出确认、取消对话框
  • php 5.2.x 输出操作的细节
  • php连接不上mysql但mysql命令行操作正常的解决方法
  • PHP中的按位与和按位或操作示例
  • php中mysql连接和基本操作代码(快速测试使用,简单方便)
  • php操作mysql数据库的基本类代码
  • php操作MongoDB基础教程(连接、新增、修改、删除、查询)
  • PHP操作HTML/XML的类库 QueryPath
  • php中内置的mysql数据库连接驱动mysqlnd简介及mysqlnd的配置安装方式
  • 使用php语句将数据库*.sql文件导入数据库
  • PHP取得当前插入数据库记录id值
  • PHP SQL数据库开发框架 Medoo
  • php 不能连接数据库 php error Can't connect to local MySQL server
  • PHP PDO数据库链接示例
  • PHP数据库工具箱 Crystal
  • PHP数据库应用脚手架 DaDaBIK
  • PHP批量更新数据库的示例代码
  • php批量删除数据库下指定前缀的表以prefix_为例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • php实现socket实现客户端和服务端数据通信源代码
  • 生成假数据的PHP库 Faker
  • php 5.5.14数据对象(PDO)介绍及PDO的预定义常量介绍
  • 请教如何在jsp中取得php传来的数据~?
  • php通过pack和unpack函数实现对二进制数据封装及解析
  • PHP数据流应用的简单例子
  • PHP的Session数据存储方案 Scache
  • PHP的XML和JSON数据解析和缓存包 coreylib
  • PHP删除MYSQL中数据表
  • php 表单提交大量数据发生丢失的解决方法
  • php数组去重复数据示例
  • php解析json数据实例
  • php中将一段数据存到一个txt文件中并显示其内容
  • php基础之连接mysql数据库和查询数据
  • PHP函数分享之curl方式取得数据、模拟登陆、POST数据
  • img标签添加php文件记录页面访问数据
  • 有关于PHP中常见数据类型的汇总分享
  • php表单请求获得数据求和示例
  • php数据批量导入csv文件(示例)
  • 基于PHP的简单采集数据入库程序
  • 基于PHP的简单采集数据入库程序【续篇】
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • IIS7配置PHP图解(IIS7+PHP_5.2.17/PHP_5.3.5)
  • php中内置的mysql数据库连接驱动mysqlnd简介及mysqlnd的配置安装方式 iis7站长之家
  • php输入流php://input使用示例(php发送图片流到服务器)
  • 修改配置真正解决php文件上传大小限制问题(apache+php)
  • PHP转换器 HipHop for PHP
  • PHP去除html标签,php标记及css样式代码参考
  • PHP 框架 Pop php
  • PHP 'ext/soap/php_xml.c'不完整修复存在多个任意文件泄露漏洞
  • PHP的JavaScript框架 PHP.JS


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3