php连接access数据库?php怎么连接access数据库
大家好,今天给各位分享php连接access数据库的一些知识,其中也会对php怎么连接access数据库进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
php怎么连接access数据库
(1)创建系统数据源,用PHP提供的ODBC函数。
(2)使用PHP的ODBC函数,但不创建数据源。
PHP使用ODBC连接Access数据库的方法。用$connstr="DRIVER= Microsoft Access Driver(*.mdb)来设置数据驱动,函数realpath()用来取得数据库的相对路径。利用该方法连接Access数据库主要应用到PHP的 odbc_connect()函数,该函数声明如下:
以下为引用的内容:
resourse odbc_connect( string dsn, string user, string password [, int cursor_type])
dsn:系统dsn名称
user:数据库服务器某用户名。
password:数据库服务器某用户密码。
cursor_type:游标类型。
代码如下:
以下为引用的内容:
$connstr="DRIVER=Microsoft Access Driver(*.mdb);
DBQ=".realpath("bookinfo.mdb");
$connid=odbc_connect($connstr,"","",SQL_CUR_USE_ODBC);
(3)使用微软的ADODB数据库驱动。
定义类COM来使用ADO方法操纵Access数据库的。
该类详细说明如下:
以下为引用的内容:
string com::com( string module_name [, string server_name [, int codepage]])
module_name:被请求组件的名字或class-id。
server_name:DCOM服务器的名字。
Codepage:指定用于将PHP字符串转换成UNICODE字符串的代码页,反之亦然。该参数的取值有CP_ACP、CP_MACCP、CP_OEMCP、CP_SYMBOL、CP_THREAD_ACP、CP_UTF7和CP_UTF8。
PHP利用com类并使用ADO方法访问数据库的代码如下:
以下为引用的内容:
$conn= new com("ADODB.Connection");
$connstr="DRIVER={Microsoft Access Driver(*.mdb)}; DBQ=". realpath("bookinfo.mdb");
$conn->Open($connstr);
如何用php连接mdb数据库
以下为几个php连接access数据库和操作acess数据的方法,全部做成了类,应用起来也更方便,也可摘用其中的部分代码应用。
<?php
--------------------------------------------------------------------
//FileName:class.php
//Summary: Access数据库操作类
//使用范例:
//$databasepath="database.mdb";
//$dbusername="";
//$dbpassword="";
//include_once("class.php");
//$access=new Access($databasepath,$dbusername,$dbpassword);
--------------------------------------------------------------------
class Access
{
var$databasepath,$constr,$dbusername,$dbpassword,$link;
function Access($databasepath,$dbusername,$dbpassword)
{
$this->databasepath=$databasepath;
$this->username=$dbusername;
$this->password=$dbpassword;
$this->connect();
}
function connect()
{
$this->constr="DRIVER={Microsoft Access Driver(*.mdb)}; DBQ=". realpath($this->databasepath);
$this->link=odbc_connect($this->constr,$this->username,$this->password,SQL_CUR_USE_ODBC);
return$this->link;
//if($this->link) echo"恭喜你,数据库连接成功!";
//else echo"数据库连接失败!";
}
function query($sql)
{
return@odbc_exec($this->link,$sql);
}
function first_array($sql)
{
return odbc_fetch_array($this->query($sql));
}
function fetch_row($query)
{
return odbc_fetch_row($query);
}
function total_num($sql)//取得记录总数
{
return odbc_num_rows($this->query($sql));
}
function close()//关闭数据库连接函数
{
odbc_close($this->link);
}
function insert($table,$field)//插入记录函数
{
$temp=explode(',',$field);
$ins='';
for($i=0;$i<count($temp);$i++)
{
$ins.="'".$_POST[$temp[$i]]."',";
}
$ins=substr($ins,0,-1);
$sql="INSERT INTO".$table."(".$field.") VALUES(".$ins.")";
$this->query($sql);
}
function getinfo($table,$field,$id,$colnum)//取得当条记录详细信息
{
$sql="SELECT* FROM".$table." WHERE".$field."=".$id."";
$query=$this->query($sql);
if($this->fetch_row($query))
{
for($i=1;$i<$colnum;$i++)
{
$info[$i]=odbc_result($query,$i);
}
}
return$info;
}
function getlist($table,$field,$colnum,$condition,$sort="ORDER BY id DESC")//取得记录列表
{
$sql="SELECT* FROM".$table."".$condition."".$sort;
$query=$this->query($sql);
$i=0;
while($this->fetch_row($query))
{
$recordlist[$i]=getinfo($table,$field,odbc_result($query,1),$colnum);
$i++;
}
return$recordlist;
}
function getfieldlist($table,$field,$fieldnum,$condition="",$sort="")//取得记录列表
{
$sql="SELECT".$field." FROM".$table."".$condition."".$sort;
$query=$this->query($sql);
$i=0;
while($this->fetch_row($query))
{
for($j=0;$j<$fieldnum;$j++)
{
$info[$j]=odbc_result($query,$j+1);
}
$rdlist[$i]=$info;
$i++;
}
return$rdlist;
}
function updateinfo($table,$field,$id,$set)//更新记录
{
$sql="UPDATE".$table." SET".$set." WHERE".$field."=".$id;
$this->query($sql);
}
function deleteinfo($table,$field,$id)//删除记录
{
$sql="DELETE FROM".$table." WHERE".$field."=".$id;
$this->query($sql);
}
function deleterecord($table,$condition)//删除指定条件的记录
{
$sql="DELETE FROM".$table." WHERE".$condition;
$this->query($sql);
}
function getcondrecord($table,$condition="")//取得指定条件的记录数
{
$sql="SELECT COUNT(*) AS num FROM".$table."".$condition;
$query=$this->query($sql);
$this->fetch_row($query);
$num=odbc_result($query,1);
return$num;
}
}
?>
22222222
class.php文件:
[php]
<?php
class Access//Access数据库操作类
{
var$databasepath,$constr,$dbusername,$dbpassword,$link;//类的属性
function Access($databasepath,$dbusername,$dbpassword)//构造函数
{
$this->databasepath=$databasepath;
$this->username=$dbusername;
$this->password=$dbpassword;
$this->connect();
}
function connect()//数据库连接函数
{
$this->constr="DRIVER={Microsoft Access Driver(*.mdb)}; DBQ=". realpath($this->databasepath);
$this->link=odbc_connect($this->constr,$this->username,$this->password,SQL_CUR_USE_ODBC);
return$this->link;
//if($this->link) echo"恭喜你,数据库连接成功!";
//else echo"数据库连接失败!";
}
function query($sql)//送一个查询字符串到数据库中
{
return@odbc_exec($this->link,$sql);
}
function first_array($sql)//从access数据库中返回一个数组
{
return@odbc_fetch_array($this->query($sql));
}
function fetch_row($query)//返回记录中的一行
{
return odbc_fetch_row($query);
}
function total_num($sql)//取得记录总数
{
return odbc_num_rows($this->query($sql));
}
function close()//关闭数据库连接函数
{
odbc_close($this->link);
}
function insert($table,$field)//插入记录函数
{
$temp=explode(',',$field);
$ins='';
for($i=0;$i{
$ins.="'".$_POST[$temp[$i]]."',";
}
$ins=substr($ins,0,-1);
$sql="INSERT INTO".$table."(".$field.") VALUES(".$ins.")";
$this->query($sql);
}
function getinfo($table,$field,$id,$colnum)//取得当条记录详细信息
{
$sql="SELECT* FROM".$table." WHERE".$field."=".$id."";
$query=$this->query($sql);
if($this->fetch_row($query))
{
for($i=1;$i<$colnum;$i++)
{
$info[$i]=odbc_result($query,$i);
}
}
return$info;
}
function getlist($table,$field,$colnum,$condition,$sort="ORDER BY id DESC")//取得记录列表
{
$sql="SELECT* FROM".$table."".$condition."".$sort;
$query=$this->query($sql);
$i=0;
while($this->fetch_row($query))
{
$recordlist[$i]=getinfo($table,$field,odbc_result($query,1),$colnum);
$i++;
}
return$recordlist;
}
function getfieldlist($table,$field,$fieldnum,$condition="",$sort="")//取得记录列表
{
$sql="SELECT".$field." FROM".$table."".$condition."".$sort;
$query=$this->query($sql);
$i=0;
while($this->fetch_row($query))
{
for($j=0;$j<$fieldnum;$j++)
{
$info[$j]=odbc_result($query,$j+1);
}
$rdlist[$i]=$info;
$i++;
}
return$rdlist;
}
function updateinfo($table,$field,$id,$set)//更新记录函数
{
$sql="UPDATE".$table." SET".$set." WHERE".$field."=".$id;
$this->query($sql);
}
function deleteinfo($table,$field,$id)//删除记录函数
{
$sql="DELETE FROM".$table." WHERE".$field."=".$id;
$this->query($sql);
}
function deleterecord($table,$condition)//删除指定条件的记录函数
{
$sql="DELETE FROM".$table." WHERE".$condition;
$this->query($sql);
}
function getcondrecord($table,$condition="")//取得指定条件的记录数函数
{
$sql="SELECT COUNT(*) AS num FROM".$table."".$condition;
$query=$this->query($sql);
$this->fetch_row($query);
$num=odbc_result($query,1);
return$num;
}
}
?>
[/php]
数据库连接文件:
[php]
<?php
$databasepath="data/database.mdb";//数据库路径
$dbusername="";//数据库用户名
$dbpassword="";//数据库密码
include_once("class.php");//调用数据库操作类
$access=new Access($databasepath,$dbusername,$dbpassword);//新建一个数据库操作类的对象
?>
[/php]
[php]
<?php
$sql="select* from$info where id=$id";
$result=$access->query($sql)or die("error2");
$array=odbc_fetch_array($result);
?>
[/php]
333333333333
这个是为了同时可以使用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']="";
<?php
/**
* 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);
}
}
php使用adodb 链接access方法
需要注意php获取路径用的是realpath
.代码如下:
<?php
$connstr="DRIVER={Microsoft Access Driver(*.mdb)}; DBQ=". realpath("data.mdb");
$connid=odbc_connect($connstr,"","",SQL_CUR_USE_ODBC);
$issuetime=date("Y-m-d H:i:s");
$sql="insert into test values("","",...)";
$result=odbc_exec($connid,$sql);
if($result) echo"successful";
else echo"failed";
?>
之二:
.代码如下:
<?PHP
//创建ADO连接
$conn=@new COM("ADODB.Connection") or die("ADO连接失败!");
$connstr="DRIVER={Microsoft Access Driver(*.mdb)}; DBQ=". realpath("temp/TempData.mdb");
$conn->Open($connstr);
//创建记录集查询
$rs=@new COM("ADODB.RecordSet");
$rs->Open("select* from blog_Content",$conn,1,3);
echo$rs->Fields["log_Title"]->Value;//输出log_Title字段
echo"<br/>";
$rs->Movenext();//将记录集指针下移
echo$rs->Fields["log_Title"]->Value;
$rs->close();
?>
方法三:用ODBC,在ODBC治理器中为db1.mdb建一处系统数据源(一般需要服务器权限,不建议使用)
名称:dbdsn(可以自己定)
驱动程序:Microsoft Access Driver(*.MDB)
代码:
.代码如下:
$Conn= odbc_connect("dbdsn","admin","123");//连接数据源
$Doquery=odbc_exec($Conn,"select* from表名 where条件");//执行查询
php连接access数据库和php怎么连接access数据库的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!