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 "<br><b>".$rs["title"].":</b> "; exit; }else{ echo "<br>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 "<br>"; }
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); } }