本文目錄一覽:
php 鏈接 .mdb數據庫,並讀取
PHP和經典的ACCESS數據庫同樣能達到較好的效果,不過採用ODBC的方式來連接該access我個人不主張這樣做,因為現在虛擬機不可能提供odbc連接,推薦使用PHP的ADODB對象來連接該數據庫
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;$icount($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寫入access?
$rs-Open(“select * from weixinmsg”,$conn,1,3); //這裡改為3就是可以寫入了
$rs-fields(“xxxx”)=”xxxxxx”;
$rs-update();
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/151377.html