扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
此类库简单、易用,便于你自己修改和对功能的改善,能解决大部分
成都创新互联公司是一家集网站建设,康保企业网站建设,康保品牌网站建设,网站定制,康保网站建设报价,网络营销,网络优化,康保网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
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',
'id1');
//拼接方法:返回
`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",
"id1",
'id
DESC',
'2');
//返回两条id1的数据,只显示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库给开发者提供了一个标准接口 它帮助开发者在PHP里充分利用面向对象编程 这些库为特定类型的内置功能提供了一个标准的API 允许类可以与PHP引擎进行无缝的交互 此外 开发者使用这些类库还可以简化工作流程 提供工作效率
下面就一起来看看这些非常实用且免费的类库吧 希望它们能助你一臂之力
Requests
Requests是一个用PHP编写的HTTP库 遵循ISC开源协议 托管在GitHub上 Requests取代了Python HTTP/ 以外的一切工作———让你与Web服务可以无缝的结合
Requests提供了一致的API 并且使用cURL或fsockopen(具体取决于可用性) 它还简化了发送请求 接受HEAD GET POST PUT DELETE或PATCH并且添加标头 表单数据和多个部分组成的文件 其次 该库还适用于国际域名 身份验证 自动压缩gzip压缩响应等 综上所述可以看出 Requests是一个非常好用且可以友好托管HTTP请求的标签
Munee
Munee是一个集图片尺寸调整 CSS JS合并/压缩 缓存等功能于一身的PHP库 可以在服务器端和客户端缓存资源 它集成了PHP图片操作库Imagine来实现图片尺寸调整和剪切 之后进行缓存
Munee可以自动编译LESS SCSS和CoffeeScript 并且可以把CSS+JS文件合并成一个单一的请求 此外 还可以对这些CSS JS文件进行精缩 让其拥有更好的性能表现 该库还可以轻易地与任何代码集成
Ratchet
Ratchet是一个PHP库 WebSockets工具包 开发者可以使用它在客户端和服务器端之间构建实时 双向的App应用 并且可以快速简单地构建事件驱动应用程序(而不是传统的HTTP 请求/响应应用程序)
Swift Mailer
Swift Mailer是一个功能丰富的PHP邮件库 不依赖于PHP自带的mail() 函数 因为该函数在发送多个邮件时占用的系统资源很高 Swift直接与SMTP服务器通讯 具有非常高的发送速度和效率
Unirest
Unirest是一个轻量级的HTTP开发库 可用于PHP Ruby Python Java Objective C等开发语言 支持GET POST PUT UPDATE DELETE操作 它的调用方法与返回结果对所有开发语言来说 都是相同的
Detector
Detector是一个开源的PHP类库 用于检测用户的浏览器环境 它可以获得浏览器的使用情况和浏览器的HTML CSS 功能 并分析是否是移动 平板电脑 桌面或网页爬虫和其他项 如 颜色深度 视频尺寸 Cookie等 该库对每个浏览器用户都使用单一的用户代理字符串来自动适应新浏览器 版本和设备
PHP Thumb
PHP Thumb是一个PHP类 用来生成图片的缩略图 只需数行代码即可 支持多种图片来源 包括文件系统或者数据库 支持大多数图片格式 并可对图片进行旋转 剪切 加水印等等 可自定义缩略图的质量 提供内建的缓存以降低服务器的负载
Zebra Image
Zebra Image是一个开源的轻量级图像处理库 并且是一款面向对象库 只需PHP GD 扩展 并支持缩放 裁剪 旋转和翻转操作 它可以用于 jpg gif png等格式
Hybrid Auth
HybridAuth是一个开源PHP类库 用于通过微博/社交网站和ID来提供验证功能实现同步登录网站功能 它能够很方便的与现有网站相集成 只要引用一个文件并添加几行代码就能够实现登录 一旦验证 HybridAuth会提供连接用户的标准化相关资料 此外 除了验证功能 这个类库能够让我们与用户连接的social API客户端相交互
Gantt Charts
Gantti是一个开源的PHP类 帮助用户即时生成Gantt图表 使用Gantti创建图表无需使用JavaScript 是纯HTML CSS 图表默认输出非常漂亮 但用户可以自定义样式进行输出(SASS样式表)
Mobile Detect
Mobile Detect是一个PHP类 通过User Agent检测各种手机设备 并结合HTTP Header来检测移动设备环境 该类库最强大的地方是 它有一个非常完整的库 可以检测出所用的设备类型(包括操作类型 以及手机品牌等都能检测)和浏览器的详细信息
ImageWorkshop
顾名思义 ImageWorkshop是一个管理和操作图片的PHP类库 这个类拥有类似图片编辑软件的逻辑 基于层的概念 可以叠加很多层或层组(每一层不同的操纵选项) 它还支持许多功能 比如水印 裁剪 移动 缩放 旋转 叠加等
JqmPhp
JqmPhp是一个PHP开源类库 旨在简化jQuery与PHP来进行移动开发 用于生成使用jQuery Mobile框架所需要的HTML文件 该类库的文件是独立的 所以你可以根据需要来选择使用
PHP Image Cache
Image Cache是一个轻量级的PHP类 可以在用户浏览器里压缩 移动 缓存图片 这个类提供一些简单的设置如 目录 根路径URL等 然后针对每一张图片调用压缩功能
Imagine
Imagine是一个面向对象的PHP类库 用于图片操作 这个类库能够处理一些经常用到的操作如 缩放 裁剪 应用过滤等 其Color类库可用于对任意特定的颜色生成RGB值 并且还提供一些方法来绘制图形如 圆弧 椭圆 线 片等
lishixinzhi/Article/program/PHP/201404/30630
首先你要知道什么是函数,比如这一个
is_mail($str){//判断的内容}
假如这个is_mail可以用来判断用户提交的数据是否是email格式的,这就是一个功能。判断is_mail的功能。
使用的时候只要
if(is_mail($str))
{}
else
{}
函数库
就是很多函数的集合。有很多功能,你就不用自己重新写了,直接使用就可以。
而类库,你要先理解类。
类,你可以理解为函数根据实际需求分类存放的一个地方。因为如果项目很大,就会有很多函数,如果不分类,有时候就很难找到了。根据函数的功能,把一类函数都整合到一个类里面,使用起来就很方便。
比如数据库操作类。
所有数据库操作的函数都放在里面了,你只要调用就可以了。
$db = new data();
$db-qurey();//使用$db类的qurey方法,其实就是使用qurey这个函数。
而类库,就是很多可以直接使用的类。
总而言之,函数库和类库,可以大大提升开发效率。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流