在我們的內部系統中,我們有csv &從我們的MySQL數據庫爲用戶(phpexcel)生成的xls文件,但是我的老闆問是否可以創建一個mdb文件。如何用php創建一個新的.MDB文件?
我從來沒有遇到任何關於即時創建新MDB文件的示例,我想知道是否有可能。我不是任何機會的專家級程序員,但是如果有人能指導我如何繼續下去,我可以管理。
我們正試圖通過向他們提供mdb而不是CSV來將用戶負載/錯誤減少到必須導入到Access中。目前他們必須將超過100個csv文件導入到Access中。
謝謝。
在我們的內部系統中,我們有csv &從我們的MySQL數據庫爲用戶(phpexcel)生成的xls文件,但是我的老闆問是否可以創建一個mdb文件。如何用php創建一個新的.MDB文件?
我從來沒有遇到任何關於即時創建新MDB文件的示例,我想知道是否有可能。我不是任何機會的專家級程序員,但是如果有人能指導我如何繼續下去,我可以管理。
我們正試圖通過向他們提供mdb而不是CSV來將用戶負載/錯誤減少到必須導入到Access中。目前他們必須將超過100個csv文件導入到Access中。
謝謝。
可以使用COM
用於訪問MDB司機,還有位於phpclasses一個簡單的類充當這樣的包裝,你可以直接使用它的靈感或端口,無論哪種方式,這是完全有可能:
<?php
class mdb
{
var $RS = 0;
var $ADODB = 0;
var $RecordsAffected;
var $strProvider = 'Provider=Microsoft.Jet.OLEDB.4.0';
var $strMode = 'Mode=ReadWrite';
var $strPSI = 'Persist Security Info=False';
var $strDataSource = '';
var $strConn = '';
var $strRealPath = '';
var $recordcount = 0;
var $ok = false;
/**
* Constructor needs path to .mdb file
*
* @param string $dsn = path to *.mdb file
* @return boolean success
*/
function mdb($dsn='Please enter DataSource!')
{
$this->strRealPath = realpath($dsn);
if(strlen($this->strRealPath) > 0)
{
$this->strDataSource = 'Data Source='.$this->strRealPath;
$result = true;
}
else
{
echo "<br>mdb::mdb() File not found $dsn<br>";
$result = false;
}
$this->RecordsAffected = new VARIANT();
$this->open();
} // eof constructor mdb()
function open()
{
if(strlen($this->strRealPath) > 0)
{
$this->strConn =
$this->strProvider.';'.
$this->strDataSource.';'.
$this->strMode.';'.
$this->strPSI;
$this->ADODB = new COM('ADODB.Connection');
if($this->ADODB)
{
$this->ADODB->open($this->strConn);
$result = true;
}
else
{
echo '<br>mdb::open() ERROR with ADODB.Connection<br>'.$this->strConn;
$result = false;
}
}
$this->ok = $result;
return $result;
} // eof open()
/**
* Execute SQL-Statement
* @param string $strSQL = sql statement
* @param boolean $getrecordcount = true when a record count is wanted
*/
function execute($strSQL, $getrecordcount = false)
{
$this->RS = $this->ADODB->execute($strSQL, &$this->RecordsAffected);
if($getrecordcount == true)
{
$this->RS->MoveFirst();
$this->recordcount = 0;
# brute force loop
while($this->RS->EOF == false)
{
$this->recordcount++;
$this->RS->MoveNext();
}
$this->RS->MoveFirst();
}
} // eof execute()
function eof()
{
return $this->RS->EOF;
} // eof eof()
function movenext()
{
$this->RS->MoveNext();
} // eof movenext()
function movefirst()
{
$this->RS->MoveFirst();
} // eof movefirst()
function close()
{
@$this->RS->Close(); // Generates a warning when without "@"
$this->RS=null;
@$this->ADODB->Close();
$this->ADODB=null;
} // eof close()
function fieldvalue($fieldname)
{
return $this->RS->Fields[$fieldname]->value;
} // eof fieldvalue()
function fieldname($fieldnumber)
{
return $this->RS->Fields[$fieldnumber]->name;
} // eof fieldname()
function fieldcount()
{
return $this->RS->Fields->Count;
} // eof fieldcount()
} // eoc mdb
?>
和示例:
這裏是類,源鏈路提供如下
include 'class_mdb.php';
$mdb = new mdb('mymdbfile.mdb'); // your own mdb filename required
$mdb->execute('select * from table'); // your own table in the mdb file
#
# first example: using fieldnames
#
while(!$mdb->eof())
{
echo $mdb->fieldvalue('description'); // using your own fields name
echo ' = ';
echo $mdb->fieldvalue(1); // using the fields fieldnumber
echo '<br>';
$mdb->movenext();
}
echo '<br><hr><br>';
#
# Going back to the first recordset for the second example
#
$mdb->movefirst();
#
# This works, too: Make each Field an object. The values change
# when the data pointer advances with movenext().
#
$url = $mdb->RS->Fields(1);
$bez = $mdb->RS->Fields(2);
$kat = $mdb->RS->Fields(3);
while(!$mdb->eof())
{
# works!
echo $bez->value;
echo ' = ';
echo $url->value;
echo '<br>';
$mdb->movenext();
}
$mdb->close();
來源:http://www.phpclasses.org/package/1700-PHP-Access-Microsoft-Access-mdb-database-files.html
<3 !!!太感謝了。 – SueBella
您可以使用我的答案左側的向上箭頭和標記接受打勾表示您的謝意,但歡迎您。 – RobertPitt
糾正我,如果我錯了,但這似乎沒有創建一個新的mdb文件的方法。我想有人可能會創建一個空的mdb文件並複製它,然後將表插入它... – horatio
要創建一個新的空Microsoft Access數據庫,我們可以使用ADOX。
下面的代碼創建C中的空Test.mdb的文件:\
$adox_catalog = new COM("ADOX.Catalog");
$adox_catalog->create('Provider = Microsoft.Jet.OLEDB.4.0; Data Source=c:\Test.mdb');
$adodb_conection = $adox_catalog->activeconnection();
您的服務器上啓用COM類? –