php轻量级数据库操作类 php用什么数据库最好

php怎么操作数据库~呢?PHP链接数据库有几种方式
mysqli:
?php
$servername = "localhost";
$username = "username";
$password = "password";
// 创建连接
$conn = new mysqli($servername, $username, $password);
// 检测连接
if ($conn-connect_error) {
die("连接失败: " . $conn-connect_error);
}
echo "连接成功";
?
也可以使用PDO进行链接 , 前提是你必须在php.ini中开启PDO:
?php
$servername = "localhost";
$username = "username";
$password = "password";
try {
$conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
echo "连接成功";
}
catch(PDOException $e)
{
echo $e-getMessage();
}
?
建议使用PDO,功能更加强大,兼容各种数据库
关于这个问题,差不多就是这个样子的了,你如果不明白 , 可以自己去后盾瞅瞅,我这些都是在后盾上学的,有空可以去看一下 , 就算不喜欢也没关系啊 , 何乐而不为呢?
我的php里面有php_pdo.dll,打开网页还是出这个错:Fatal error: Class 'PDO' not found in你前面引用这个类所在的文件了么?
include_once("PDO.php");
并不是存在PDO.dll就可以使用的 , 那只是PHP环境支持你调用了
类还需要自己写或者引入
php有哪些框架?1. Yii
Yii是一个基于组件的高性能的PHP的框架 , 用于开发大规模Web应用 。Yii采用严格的OOP编写,并有着完善的库引用以及全面的教程 。从MVC,DAO/ActiveRecord,widgets,caching,等级式RBAC,Web服务,到主体化,I18N和L10N , Yii提供了今日Web 2.0应用开发所需要的几乎一切功能 。而且这个框架的价格也并不太高 。事实上,Yii是最有效率的PHP框架之一 。
2. CodeIgniter
CodeIgniter是一个应用开发框架——一个为建立PHP网站的人们所设计的工具包 。其目标在于快速的开发项目:它提供了丰富的库组以完成常见的任务 , 以及简单的界面,富有条理性的架构来访问这些库 。使用CodeIgniter开发可以往项目中注入更多的创造力,因为它节省了大量编码的时间 。
3. CakePHP
CakePHP是一个快速开发PHP的框架,其中使用了一些常见的设计模式如ActiveRecord,Association Data Mapping,Front Controller以及MVC 。其主要目标在于提供一个令任意水平的PHP开发人员都能够快速开发web应用的框架,而且这个快速的实现并没有牺牲项目的弹性 。
4. PHPDevShell
PHPDevShell是一个开源(GNU/LGPL)的快速应用开发框架,用于开发不含Javascript的纯PHP 。它有一个完整的GUI管理员后台界面 。其主要目标在于开发插件一类的基于管理的应用,其中速度、安全、稳定性及弹性是最优先考虑的重点 。其设计形成了一个简单的学习曲线,PHP开发者无需学习复杂的新术语 。PHPDevShell的到来满足了开发者们对于一个轻量级但是功能完善,可以无限制的进行配置的GUI的需求 。
5. Akelos
Akelos PHP框架是一个基于MVC设计模式的web应用开发平台 。基于良好的使用习惯,使用它可以完成如下任务:
◆方便的使用Ajax编写views
◆通过控制器管理请求(request)及响应(response)
◆管理国际化的应用
◆使用简单的协议与模型及数据库通信
你的Akelos应用可以在大多数共享主机服务供应方上运行,因为Akelos对服务器唯一的要求就是支持PHP 。因此,Akelos PHP框架是理想的用于发布单独web应用的框架,因为它不需要非标准PHP配置便能运行 。
6. Symfony
Symfony是一个用于开发PHP5项目的web应用框架 。
这个框架的目的在于加速web应用的开发以及维护 , 减少重复的编码工作 。
Symfony的系统需求不高,可以被轻易的安装在任意设置上:你只需一个Unix或Windows,搭配一个安装了PHP5的网络服务器即可 。它与差不多所有的数据库兼容 。Symfony的价位不高,相比主机上的花销要低得多 。
对于PHP开发者而言,使用Symfony是一件很自然的事,其学习曲线只有短短一天 。干净的设计以及代码可读性将缩短开发时间 。开发者可以将敏捷开发的原理(如DRY , KISS或XP等)应用在其中 , 将重点放在应用逻辑层面上 , 而不用花费大量时间在编写没完没了的XML配置文件上 。
Symfony旨在建立企业级的完善应用程序 。也就是说,你拥有整个设置的控制权:从路径结构到外部库,几乎一切都可以自定义 。为了符合企业的开发条例,Symfony还绑定了一些额外的工具 , 以便于项目的测试,调试以及归档 。
7. Prado
PRADO团队由一些PRADO狂热者组成,这些成员开发并推动PRADO框架以及相关项目的进行 。
PRADO的灵感起源于Apache Tapestry 。从04年开始 , PRADO成为SourceForge上的开源项目之一 。这个项目目前进展到了3.x版本 。
8. Zend
作为PHP艺术及精神的延伸,Zend框架的基础在于简单,面向对象的最佳方法,方便企业的许可协议,以及经过反复测试的快速代码库 。Zend框架旨在建造更安全 , 更可靠的Web 2.0应用及web服务,并不断从前沿厂商(如Google,Amazon,Yahoo,Flickr , StrikeIron和ProgrammableWeb等)的API那里吸收精华 。
9. ZooP
Zoop PHP框架,意为Zoop面向对象的PHP框架 。
这是个稳定,可伸缩并可移植的框架 。从诞生到现在的5年间,已经在不少产品开发中被使用 。Zoop是一个快速,有效并干净的框架 。它的伸缩性很好,你可以只安装你需要的功能 。
对代码并不很熟悉的开发者也可以通过Zoop快速的开发安全的web应用 。熟练的开发者则可以更加将Zoop的弹性利用到极致 。
Zoop建议将display,logic以及数据层(MVC)分开使用 。
Zoop由很多组件和项目集合而成,其中包括smarty和prototype AJAX框架 , PEAR模块等 。高效的核心组件提供了很多你原本需要自己编码来实现的功能 。Zoop内置的纠错功能可以通过配置实现生产环境下的错误日志生成 , 这个错误日志提供了很多信息,可读性很高,可以更轻易的寻找并排除错误 。
Zoop的一个特别之处在于其GuiControls,在PHP中是一个相当革新的想法 。它提供了很多form widgets与验证完整的集合到一起,并形成了一个可以轻松打造个性化GuiControls的框架 。
10. QPHP
QPHP,意为快速PHP,它是一个与ASP.NET类似的MVC框架 。基本上它是这样一个情况:
◆整合了Java和C#的美感
◆除去了在其他PHP框架中使用的Perl形式的意义含糊的语言
◆大量基于OOP的概念
求PHP数据库封装类操作代码?php
class MySQL{
private $host;//服务器地址
private $name;//登录账号
private $pwd;//登录密码
private $dBase;//数据库名称
private $conn;//数据库链接资源
private $result;//结果集
private $msg;//返回结果
private $fields;//返回字段
private $fieldsNum;//返回字段数
private $rowsNum;//返回结果数
private $rowsRst;//返回单条记录的字段数组
private $filesArray = array();//返回字段数组
private $rowsArray = array();//返回结果数组
private $charset='utf8';//设置操作的字符集
private $query_count=0;//查询结果次数
static private $_instance;//存储对象
//初始化类
private function __construct($host='',$name='',$pwd='',$dBase=''){
if($host!='')$this-host= $host;
if($name!='')$this-name= $name;
if($pwd!='')$this-pwd= $pwd;
if($dBase !='')$this-dBase = $dBase;
$this-init_conn();
}
//防止被克隆
private function __clone(){}
public static function getInstance($host='',$name='',$pwd='',$dBase=''){
if(FALSE == (self::$_instance instanceof self)){
self::$_instance = new self($host,$name,$pwd,$dBase);
}
return self::$_instance;
}
public function __set($name,$value){
$this-$name=$value;
}
public function __get($name){
return $this-$name;
}
//链接数据库
function init_conn(){
$this-conn=@mysql_connect($this-host,$this-name,$this-pwd) or die('connect db fail !');
@mysql_select_db($this-dBase,$this-conn) or die('select db fail !');
mysql_query("set names ".$this-charset);
}
//查询结果
function mysql_query_rst($sql){
if($this-conn == '') $this-init_conn();
$this-result = @mysql_query($sql,$this-conn);
$this-query_count;
}
//取得字段数
function getFieldsNum($sql){
$this-mysql_query_rst($sql);
$this-fieldsNum = @mysql_num_fields($this-result);
}
//取得查询结果数
function getRowsNum($sql){
$this-mysql_query_rst($sql);
if(mysql_errno() == 0){
return @mysql_num_rows($this-result);
}else{
return '';
}
}
//取得记录数组(单条记录)
function getRowsRst($sql,$type=MYSQL_BOTH){
$this-mysql_query_rst($sql);
if(empty($this-result)) return '';
if(mysql_error() == 0){
$this-rowsRst = mysql_fetch_array($this-result,$type);
return $this-rowsRst;
}else{
return '';
}
}
//取得记录数组(多条记录)
function getRowsArray($sql,$type=MYSQL_BOTH){
!empty($this-rowsArray) ? $this-rowsArray=array() : '';
$this-mysql_query_rst($sql);
if(mysql_errno() == 0){
while($row = mysql_fetch_array($this-result,$type)) {
$this-rowsArray[] = $row;
}
return $this-rowsArray;
}else{
return '';
}
}
//更新、删除、添加记录数
function uidRst($sql){
if($this-conn == ''){
$this-init_conn();
}
@mysql_query($sql);
$this-rowsNum = @mysql_affected_rows();
if(mysql_errno() == 0){
return $this-rowsNum;
}else{
return '';
}
}
//返回最近插入的一条数据库的id值
function returnRstId($sql){
if($this-conn == ''){
$this-init_conn();
}
@mysql_query($sql);
if(mysql_errno() == 0){
return mysql_insert_id();
}else{
return '';
【php轻量级数据库操作类 php用什么数据库最好】}
}
//获取对应的字段值
function getFields($sql,$fields){
$this-mysql_query_rst($sql);
if(mysql_errno() == 0){
if(mysql_num_rows($this-result)0){
$tmpfld = @mysql_fetch_row($this-result);
$this-fields = $tmpfld[$fields];
}
return $this-fields;
}else{
return '';
}
}
//错误信息
function msg_error(){
if(mysql_errno() != 0) {
$this-msg = mysql_error();
}
return $this-msg;
}
//释放结果集
function close_rst(){
mysql_free_result($this-result);
$this-msg = '';
$this-fieldsNum = 0;
$this-rowsNum = 0;
$this-filesArray = '';
$this-rowsArray = '';
}
//关闭数据库
function close_conn(){
$this-close_rst();
mysql_close($this-conn);
$this-conn = '';
}
//取得数据库版本
function db_version() {
return mysql_get_server_info();
}
}
PHP数据库操作之基于Mysqli的数据库操作类库此类库简单、易用,便于你自己修改和对功能的改善,能解决大部分
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用什么数据库最好的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。

    推荐阅读