php连接access数据库的两种方法,总结如下:

(1)第一种方法:

//读取mdb数据库的值,创建ADO连接

$username=1;

$conn=new com("ADODB.Connection");

$connstr="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=". realpath("web.mdb");//Access数据库地址

$conn->Open($connstr);

//创建记录集

$rs=new com("ADODB.RecordSet");

$assql="select * from sail_about where id=".$username."";

$rs->Open($assql,$conn,1,1);//打开数据库

if(! $rs->eof){

echo "".$rs["title"].": ";

exit;

}else{

echo "
ACCESS查询成功";

}

//循环读取数据

while(!$rs->eof){

echo $rs->fields['G_date']->Value;

echo '';

$rs->movenext();//将记录集指针下移

}

$rs->close();//关闭数据库

(2)第二种方法:

//用odbc_connect函数连接access数据库

$connstr="DRIVER=Microsoft Access Driver (*.mdb);DBQ=".realpath("web.mdb");

$conn=odbc_connect($connstr,"","",SQL_CUR_USE_ODBC );

$query=odbc_do($conn,"select * from sail_about");

while(odbc_fetch_row($query)){

for($i=0;$i<2;$i++){ //$i<2 2值是sail_about 表里的值数

echo $record[$i] = odbc_result($query,$i+1);

}

echo "
";

}

PHP连接Access数据库的类:

/**

*2007.04byzhaohe

*

*php连接access通用类

*

*用法:

*建立newAccess类=>set_db设置数据路径=>set_login设置连接数据库的用户名和密码

*=>通过set_conn设置连接=>

*{

get_result获取查询执行结果;get_result_rows获取查询执行列表,一般是select

insert_info插入新的记录update_info更新记录

}

*/

class Access{

/**

*类变量定义

*@param$connmysql连接号

*@param$error错误代号

*@param$username/$password数据库连接用户名和密码

*@paramarray$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();

}

}

/**

*设置数据库文件名

*@paramstring$dbfile

*

*return void

*/

function set_db($dbfile){

$this->database=$dbfile;

}

/**

*设置连接数据库的用户名和密码

*@paramstring$user用户名

*@paramstring$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=MicrosoftAccessDriver(*.mdb);DBQ=".realpath($this->database),$this->username,$this->password,SQL_CUR_USE_ODBC)){

$this->error=0;

}else{

$this->error=1;

}

}

/**

*设置当前操作的数据表

*@paramstring$tb

*

*@return void

*/

function set_table($tb){

$this->table=$tb;

}

/**

*返回sql查询结果

*@paramstring$sqlsql语句

*

*@return #id

*/

function get_result($sql){

return odbc_do($this->conn,$sql);

}

/**

*获取查询的结果

*@paramstring$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;

}

/**

*获取部分查询结果

*

*@paramArray数组

*@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$colfrom$tb";

}else{

$sql="selecttop$limit$colfrom$tb";

}

if(isset($order)){

$sql.="orderby$order";

}

return $this->get_result_rows($sql);

}

/**

*执行数据库插入操作

*

*@param$arrvalues列表,数组索引为数据表字段

*@param$tb操作数据表如果为空则为设置的当前类的操作表

*/

function insert_info($arr,$tb=""){

$cols=array_keys($arr);

$values=array_values($arr);

if(empty($tb)){

$tb=$this->tb;

}

$sql="insertinto[$tb]([".implode("],[",$cols)."])values('".implode("','",$values)."')";

return $this->get_result($sql);

}

/**

*执行数据库更新操作

*

*@paramarray$arr要更新的字段值数组索引为表字段名

*@paramarray$con条件数组

*@paramstring$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 $this->get_result($sql);

}

}

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐