php怎么获取access数据库中的所有表名和列名
匿名 · 更新于 2014/3/11
PHP操作Access类 access.class.php
//----------PHP操作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 get_tables(){ //获取数据库所有表
$rs = odbc_tables($this->link);
$tables_arr = array();
while (odbc_fetch_row($rs)){
if(odbc_result($rs,"TABLE_TYPE")=="TABLE"){
array_push($tables_arr,odbc_result($rs,"TABLE_NAME"));
}
}
return $tables_arr;
}
function query($sql)
{
return @odbc_exec($this->link,$sql);
}
function first_array($sql) //返回结果集第一条数组
{
return odbc_fetch_array($this->query($sql));
}
function all_array($sql){ //返回结果集数组
$rs = $this->query($sql);
$all_arr = array();
while($row = odbc_fetch_array($rs)){
array_push($all_arr,$row);
}
return $all_arr;
}
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 ins="substr($ins,0,-1);" ins.="'" sql="INSERT INTO " this-="" values="">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;
}
}
include("access.class.php");
$access = new Access("im.mdb","","","");
$tables = $access->get_tables(); //获取数据库数组
//循环每个数据库中每个表
$clume_arr; //记录每个表的字段
foreach($tables as $tableid=>$tablename){
//$rs = $access->query("select top 1 * from $tabname"); //首先查询表结构
$arr = $access->all_array("select top 1 * from ".$tablename);
$clume_arr[$tableid] = array();
foreach($arr[0] as $key => $val){
//echo mb_convert_encoding($key,'utf-8','gbk')." ".mb_convert_encoding($val,'utf-8','gbk')."<br />";
array_push($clume_arr[$tableid],mb_convert_encoding($key,'utf-8','gbk'));
}
}
