gpt4 book ai didi

php - 如何用 php 创建一个新的 .MDB 文件?

转载 作者:可可西里 更新时间:2023-11-01 00:36:25 24 4
gpt4 key购买 nike

在我们的内部系统中,我们从 MySQL 数据库为用户 (phpexcel) 生成了 csv 和 xls 文件,但我的老板问是否可以创建 mdb 文件。

我从来没有遇到过任何关于动态创建新 MDB 文件的示例,我想知道这是否可能。我无论如何都不是专家程序员,但如果有人能指导我应该如何进行,我可以管理。

我们试图通过向他们提供 mdb 而不是他们必须导入到 Access 中的 CSV 来减少用户负担/错误。目前,他们必须将 100 多个 csv 文件导入 Access。

谢谢。

最佳答案

您可以使用 COM 来 Access 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

关于php - 如何用 php 创建一个新的 .MDB 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6512723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com