【问题标题】:Connecting to MSAccess database with PHP使用 PHP 连接到 MS Access 数据库
【发布时间】:2017-04-01 17:48:12
【问题描述】:

过去几天,我一直在尝试使用我的 PHP 应用程序 (5.4.32) 连接到 MSAccess 数据库 (2000),但没有成功。 我探索了一些我在网上找到的示例,虽然看起来 PHP 脚本正在查找数据库正常,但它似乎在发出连接请求后立即停止执行。

我的 PHP 信息可以在这里找到:http://www.ve3gop.com/php_info.php

关键组件(PDO、pdo_mysql 和 PDO_ODBC)似乎已启用。

我尝试了 3 个示例: 示例 1 发送连接请求后停止。

<?php
$dbName = $_SERVER["SYSTEM_ROOT"] . "HockeyPool.mdb";
if (!file_exists($dbName)) {
    die("Could not find database file.");
}
else
{
echo "Using " . $dbName . " database.";
}

$db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$dbName; Uid=; Pwd=;");

echo "Connection Request Sent";

$sql  = "SELECT * FROM PoolTeams";
$result = $db->query($sql);
while ($row = $result->fetch()) {
    $teamIdent        = $row["ID"];
    $teamName         = $row["TeamName"];
}
?>

Example2 同样的事情...在请求发送后停止。

<?php
$bits = 8 * PHP_INT_SIZE;
echo "(Info: This script is running as $bits-bit.)\r\n\r\n";
$dbName = "HockeyPool.mdb";

$dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=HockeyPool.mdb");

echo "Request Sent";
$dbh = new PDO($connStr);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql = "SELECT * FROM PoolTeams";
$sth = $dbh->prepare($sql);
$sth->execute();

while ($row = $sth->fetch()) {
    echo $row['PoolTeamName'] . "\r\n";
}
?>

最后,示例 3 根本不起作用。

<?php

$conn = new COM('ADODB.Connection');
$dbName = $_SERVER["SERVER_ROOT"] . "HockeyPool.mdb";
echo $dbName;

 if (!file_exists($dbName)) {
    die("Could not find database file.");
 }

conn->Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$dbName");

echo $dbName;
$conn->close;

?>

任何人都可以为我指明正确的方向以使我的项目起步吗?我将不胜感激。

谢谢

【问题讨论】:

    标签: php ms-access pdo odbc


    【解决方案1】:

    试试这个:

    "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=<Path>;"
    

    如果您有密码,请尝试到最后

    "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=<Path>;Jet OLEDB:Database Password=<Pass>;"
    

    【讨论】:

    • 刚刚意识到您使用的是 MS Access 2k。您可能需要将提供程序更改为“Provider=Microsoft.Jet.OLEDB.4.0;”
    • 嗨克林特...感谢您回来。这是根据您的建议修改的代码...不幸的是,它返回一个错误,表明网页无法处理此请求: 关闭; ?>
    • 我应该补充一点,它似乎一遇到第一条指令就崩溃了 $conn = new COM('ADODB.Connection');
    • 明白了!!!我将我的 PHP 从 5.4.32 升级到 5.4.45,并开始收到关于正在发生的事情的有意义的消息,而不是可怕的“无法处理请求”错误。原来 COM 组件没有在 php.ini 文件中打开(实际上它是从 5.4.2 的 ini 文件中删除的,我不知道)。我所要做的就是在 php.ini 中添加几行,重新启动服务器,瞧!感谢克林特回复我的建议。
    • 别担心,伙计。听起来你自己解决了它!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-05
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    • 2018-01-30
    相关资源
    最近更新 更多