php能不能直接讀寫mdb文件的簡單介紹

本文目錄一覽:

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-tw/n/151377.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-11 13:41
下一篇 2024-11-11 13:41

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • vue下載無後綴名的文件被加上後綴.txt,有後綴名的文件下載正常問題的解決

    本文旨在解決vue下載無後綴名的文件被加上後綴.txt,有後綴名的文件下載正常的問題,提供完整的代碼示例供參考。 一、分析問題 首先,需了解vue中下載文件的情況。一般情況下,我們…

    編程 2025-04-29
  • 如何在Java中拼接OBJ格式的文件並生成完整的圖像

    OBJ格式是一種用於表示3D對象的標準格式,通常由一組頂點、面和紋理映射坐標組成。在本文中,我們將討論如何將多個OBJ文件拼接在一起,生成一個完整的3D模型。 一、讀取OBJ文件 …

    編程 2025-04-29
  • 為什麼用cmd運行Java時需要在文件內打開cmd為中心

    在Java開發中,我們經常會使用cmd在命令行窗口運行程序。然而,有時候我們會發現,在運行Java程序時,需要在文件內打開cmd為中心,這讓很多開發者感到疑惑,那麼,為什麼會出現這…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • Python程序文件的拓展

    Python是一門功能豐富、易於學習、可讀性高的編程語言。Python程序文件通常以.py為文件拓展名,被廣泛應用於各種領域,包括Web開發、機器學習、科學計算等。為了更好地發揮P…

    編程 2025-04-29
  • Python將矩陣存為CSV文件

    CSV文件是一種通用的文件格式,在統計學和計算機科學中非常常見,一些數據分析工具如Microsoft Excel,Google Sheets等都支持讀取CSV文件。Python內置…

    編程 2025-04-29
  • Python zipfile解壓文件亂碼處理

    本文主要介紹如何在Python中使用zipfile進行文件解壓的處理,同時詳細討論在解壓文件時可能出現的亂碼問題的各種解決辦法。 一、zipfile解壓文件亂碼問題的根本原因 在P…

    編程 2025-04-29
  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29
  • Python如何導入py文件

    Python是一種開源的高級編程語言,因其易學易用和強大的生態系統而備受青睞。Python的import語句可以幫助用戶將一個模塊中的代碼導入到另一個模塊中,從而實現代碼的重用。本…

    編程 2025-04-29

發表回復

登錄後才能評論