Sivo 悉见

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=&quot;SELECT * FROM &quot;.$table.&quot; WHERE &quot;.$field.&quot;=&quot;.$id.&quot;&quot;;
    $query=$this-&gt;query($sql);
    if($this-&gt;fetch_row($query))
    {
        for ($i=1;$i&lt; $colnum;$i++)
        {
      $info[$i]=odbc_result($query,$i);
         }
     }
     return $info;
}
    
function getlist($table,$field,$colnum,$condition,$sort=&quot;ORDER BY id DESC&quot;)//取得记录列表    
{
     $sql=&quot;SELECT * FROM &quot;.$table.&quot; &quot;.$condition.&quot; &quot;.$sort;
     $query=$this-&gt;query($sql);
     $i=0;
     while ($this-&gt;fetch_row($query)) 
     {
    $recordlist[$i]=getinfo($table,$field,odbc_result($query,1),$colnum);
    $i++;
      }
      return $recordlist;
}
    
function getfieldlist($table,$field,$fieldnum,$condition=&quot;&quot;,$sort=&quot;&quot;)//取得记录列表
{
     $sql=&quot;SELECT &quot;.$field.&quot; FROM &quot;.$table.&quot; &quot;.$condition.&quot; &quot;.$sort;
     $query=$this-&gt;query($sql);
     $i=0;
     while ($this-&gt;fetch_row($query)) 
     {
     for ($j=0;$j&lt; $fieldnum;$j++)
    {
               $info[$j]=odbc_result($query,$j+1);
    }    
    $rdlist[$i]=$info;
    $i++;
     }
     return $rdlist;
}
    
function updateinfo($table,$field,$id,$set)//更新记录
{
    $sql=&quot;UPDATE &quot;.$table.&quot; SET &quot;.$set.&quot; WHERE &quot;.$field.&quot;=&quot;.$id;
    $this-&gt;query($sql);
}
    
function deleteinfo($table,$field,$id)//删除记录
{
     $sql=&quot;DELETE FROM &quot;.$table.&quot; WHERE &quot;.$field.&quot;=&quot;.$id;
     $this-&gt;query($sql);
}
    
function deleterecord($table,$condition)//删除指定条件的记录
{
     $sql=&quot;DELETE FROM &quot;.$table.&quot; WHERE &quot;.$condition;
     $this-&gt;query($sql);
}
    
function getcondrecord($table,$condition=&quot;&quot;)// 取得指定条件的记录数
{
     $sql=&quot;SELECT COUNT(*) AS num FROM &quot;.$table.&quot; &quot;.$condition;
     $query=$this-&gt;query($sql);
     $this-&gt;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'));
    }
}