找回密码
 注册
搜索
热搜: 回贴

php连接Access数据库并实现简单增删查改语句的类

2010-1-31 08:09| 发布者: admin| 查看: 91| 评论: 0|原作者: 墨元

这个是为了 同时可以使用access和mysql而做的 先弄一个mysql的 然后又写一个access的 所有的函数一一对应 你可以看下 绝对原创喔~~
配置文件如下
$config['db']['type'] = "Mysql"; //数据库类型“Mysql”,“Access”
$config['db']['database']= "ourcms"; //数据库(文件)名
$config['db']['host'] = ""; //数据库主机
$config['db']['username']= "7king"; //数据库连接用户名
$config['db']['password']= "tingting"; //数据库连接密码

/*
$config['db']['type'] = "Access"; //数据库类型“Mysql”,“Access”
$config['db']['database']= "ourcms.mdb";//数据库(文件)名
$config['db']['host'] = "";
$config['db']['username']= "";
$config['db']['password']= "";

/**
* 2007.04 by zhaohe
*
* php连接access通用类
*
* 用法:
* 建立new Access类 => set_db设置数据路径 => set_login 设置连接数据库的用户名和密码
* => 通过set_conn 设置连接 =>
* {
get_result 获取查询执行结果; get_result_rows 获取查询执行列表,一般是select
insert_info 插入新的记录 update_info更新记录
}
*
*
*/


class Access {
/**
* 类变量定义
* @param $conn mysql连接号
* @param $error 错误代号
* @param $username/$password 数据库连接用户名和密码
* @param array $err_info 错误信息
*
* @param $debuginfo 调试信息
* @param $table 当前操作数据表
*/
var $conn;
var $error;
var $database;
var $username = "";
var $password = "";
var $err_info = array(
0 => "没有错误!",
1 => "数据库连接失败!",
2 => "sql执行出错!"
);
var $debuginfo="";
var $table;

/**
* 默认构造方法
**/
function Access( $arr=null ){
if( is_array($arr) ) {
$this->set_login( $arr['host'] , $arr['username'] , $arr['password'] );
$this->set_db( $arr['database'] );
$this->set_conn();
}
}

/**
* 设置数据库文件名
* @param string $dbfile
*
* return void
*/
function set_db ( $dbfile ){
$this->database = $dbfile;
}

/**
* 设置连接数据库的用户名和密码
* @param string $user 用户名
* @param string $pwd 密码
*
* @return void
*/
function set_login ( $user , $pwd ){

$this->username=$user;
$this->password=$pwd;

}

/**
* 创建数据库连接
* @param
* return void
*/
function set_conn ( ){

if($this->conn=odbc_connect("DRIVER=Microsoft Access Driver (*.mdb);DBQ=".realpath($this->database),$this->username,$this->password,SQL_CUR_USE_ODBC )) $this->error=0;
else $this->error=1;
}

/**
* 设置当前操作的数据表
* @param string $tb
*
* @return void
*/
function set_table( $tb ) {
$this->table = $tb;
}

/**
* 返回sql查询结果
* @param string $sql sql语句
*
* @return #id
*/
function get_result( $sql ){
return odbc_do( $this->conn , $sql );
}

/**
* 获取查询的结果
* @param string $sql
*
* @return array 结果的二维数组
*/
function get_result_rows( $sql ){

$array = array() ;
$result = $this->get_result( $sql );
while( $row = odbc_fetch_array( $result ) )
$array[] = $row ;
return $array;
}

/**
* 获取部分查询结果
*
* @param Array 数组
* @return Array
*/
function get_query_result( $cols , $tb=null , $order=null , $limit=null , $start=0 ) {
if( empty($tb) ) $tb=$this->table;
else $this->table=$tb;

if( is_array($cols) ) $col="[".implode('],[',$cols)."]";
else $col = $cols;

if( empty($limit) )
$sql = "select $col from $tb";
else
$sql ="select top $limit $col from $tb";;
if( isset($order) ) $sql.=" order by $order";

return $this->get_result_rows($sql);
}

/**
* 执行数据库插入操作
*
* @param $arr values列表,数组索引为数据表字段
* @param $tb 操作数据表 如果为空则为设置的当前类的操作表
*/
function insert_info( $arr , $tb = "" ) {

$cols = array_keys( $arr );
$values = array_values( $arr );

if (empty($tb)) $tb = $this->tb;
/*
foreach( $arr as $key => $value ){
$cols[] = $key;
$values[] = $value;
}
*/
$sql = "insert into [$tb]([".implode("],[",$cols)."]) values('".implode("','",$values)."')";
//return $sql;
return $this->get_result( $sql );
}

/**
* 执行数据库更新操作
*
* @param array $arr 要更新的字段值 数组索引为表字段名
* @param array $con 条件数组
* @param string $tb 要操作的数据表
*
*/
function update_info( $arr , $con , $tb = "" ) {

$cols = array();
$conditions = array();

if (empty( $tb )) $tb = $this->tb;

foreach( $arr as $key => $value ){
$cols[] = "[$key]='$value'";
}

foreach( $con as $key => $value ) {
//检查数据类型
if( is_int($value) || is_float($value) )
$conditions[] = "[$key]=$value";
else
$conditions[] = "[$key]='$value'";
}

$sql = "update [$tb] set ".implode(",",$cols)." where ".implode(" and ",$conditions);
//return $sql;
return $this->get_result( $sql );
}

}
?>

mysql的类如下
class Mysql {
/**
* mysql连接执行类,将sql的执行实现数据库无关性
*
*
*
*/

/**
* 类变量定义
* @param $conn mysql连接号
* @param $error 错误代号
* @param $username/$password 数据库连接用户名和密码
* @param array $err_info 错误信息
*
* @param $debuginfo 调试信息
* @param $table 当前操作数据表
*/
var $conn;
var $error;
var $username = "";
var $password = "";
var $host;
var $database;
var $err_info = array(
0 => "没有错误!",
1 => "数据库连接失败!",
2 => "sql执行出错!"
);
var $debuginfo="";
var $table;

function Mysql( $arr=null ) {
if( is_array($arr) ) {//var_dump($arr);
$this->set_login( $arr['host'] , $arr['username'] , $arr['password'] );
$this->set_db( $arr['database'] );
$this->set_conn();
if( isset($this->error) && $this->error!=0 ) die($this->err_info[$this->error]);
}
}

/**
* 设置数据库名
* @param string $database
*
* return void
*/
function set_db ( $dbfile ){
$this->database = $dbfile;
}
/**
* 设置连接数据库的用户名和密码
* @param string $user 用户名
* @param string $pwd 密码
*
* @return void
*/
function set_login ( $host , $user , $pwd ){

$this->host=$host;
$this->username=$user;
$this->password=$pwd;

}

/**
* 创建数据库连接
* @param
* return void
*/
function set_conn (){

$this->conn=mysql_connect($this->host,$this->username,$this->password );

if ( isset($this->conn) && mysql_select_db($this->database) )
$this->error=0;
else
$this->error=1;
}

/**
* 设置当前操作的数据表
* @param string $tb
*
* @return void
*/
function set_table( $tb ) {
$this->table = $tb;
}

/**
* 返回sql查询结果
* @param string $sql sql语句
*
* @return #id
*/
function get_result( $sql ){
return mysql_query( $sql , $this->conn );
}

/**
* 获取查询的结果
* @param string $sql
*
* @return array 结果的二维数组
*/
function get_result_rows( $sql ){
$array = array() ;
$result = $this->get_result( $sql );
while( $row = mysql_fetch_assoc( $result ) )
$array[] = $row ;
return $array;
}

/**
* 获取部分查询结果
*
* @param Array 数组
* @return Array
*/
function get_query_result( $cols , $tb=null , $condition , $order=null , $limit=null , $start=0 ) {
if( empty($tb) ) $tb=$this->table;
else $this->table=$tb;
if( is_array($cols) ) $col="`".implode('`,`',$cols)."`";
else $col = $cols;

if( isset($limit) )
$sql.="select top $limit $col from $tb";
else
$sql = "select $col from $tb";
if( isset($condition) ) $sql.=" where $condition";
if( isset($order) ) $sql.=" order by $order";
if( isset($limit) ) $sql.=" limit $start,$limit";

return $this->get_result_rows($sql);
}

/**
* 执行数据库插入操作
*
* @param $arr values列表,数组索引为数据表字段
* @param $tb 操作数据表 如果为空则为设置的当前类的操作表
*/
function insert_info( $arr , $tb = "" ) {

$cols = array_keys( $arr );
$values = array_values( $arr );

if (empty($tb)) $tb = $this->table;
/*
foreach( $arr as $key => $value ){
$cols[] = $key;
$values[] = $value;
}
*/
$sql = "insert into [$tb](`".implode("`,`",$cols)."`) values('".implode("','",$values)."')";
//return $sql;
return $this->get_result( $sql );
}

/**
* 执行数据库更新操作
*
* @param array $arr 要更新的字段值 数组索引为表字段名
* @param array $con 条件数组
* @param string $tb 要操作的数据表
*
*/
function update_info( $arr , $con , $tb = "" ) {

$cols = array();
$conditions = array();

if (empty( $tb )) $tb = $this->table;

if( is_array($arr) ) {
foreach( $arr as $key => $value ){
$cols[] = "`$key`='$value'";
}

foreach( $con as $key => $value ) {
//检查数据类型
if( is_int($value) || is_float($value) )
$conditions[] = "`$key`=$value";
else
$conditions[] = "`$key`='$value'";
}

$sql = "update `$tb` set ".implode(",",$cols)." where ".implode(" and ",$conditions);
}
else
$sql = "update `$tb` set $arr where $con";
//return $sql;
return $this->get_result( $sql );
}
}


最新评论

相关分类

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 17:39 , Processed in 0.126102 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部