13

我目前面临着一个新的挑战,即开发一个使用 Microsoft Access 作为主数据库而不是 mysql 的站点。我以前没有使用过 MS Access,我想知道如何去做,我在W3schools上查找了 w3c 网站,但代码给出了错误

警告:odbc_connect() [function.odbc-connect]:SQL 错误:[Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序,C:\Users\NNALI\Desktop\ 中 SQLConnect 中的 SQL 状态 IM002第 2 行的 root\test.php

这个错误

警告:odbc_exec() 期望参数 1 是资源,布尔值在第 4 行的 C:\Users\NNALI\Desktop\Breweries\root\test.php 中给出

我被卡住了,不知道该怎么办,我将不胜感激。

<?php
    $conc = odbc_connect("northwind", "","");
    $sql  = "Select * From customers";
    $rs   = odbc_exec($conn, $sql);
?>

以上是我使用的代码

4

6 回答 6

14

如果您刚刚开始一个新项目,那么我建议您使用 PDO 而不是旧odbc_exec()方法。这是一个简单的例子:

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

$connStr = 
        'odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};' .
        'Dbq=C:\\Users\\Gord\\Desktop\\foo.accdb;';

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

$sql = 
        "SELECT AgentName FROM Agents " .
        "WHERE ID < ? AND AgentName <> ?";
$sth = $dbh->prepare($sql);

// query parameter value(s)
$params = array(
        5,
        'Homer'
        );

$sth->execute($params);

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

注意:如果您不需要支持上述 Unicode 字符,上述方法就足够U+00FF。如果您确实需要支持这些字符,那么PDO_ODBCodbc_功能都不起作用;您需要使用此答案中描述的解决方案。

于 2013-11-06T09:41:10.543 回答
5

问题是一个简单的错字。您在第 2 行将变量命名为“conc”,但在第 4 行引用了“conn”。

于 2016-11-13T14:42:40.987 回答
3
<?php
    $dbName = $_SERVER["DOCUMENT_ROOT"] . "products\products.mdb";
    if (!file_exists($dbName)) {
       die("Could not find database file.");
    }
    $db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$dbName; Uid=; Pwd=;");

成功的连接将允许从 PHP 执行 SQL 命令来读取或写入数据库。但是,如果您收到错误消息“PDOException 找不到驱动程序”,那么很可能是未安装 PDO ODBC 驱动程序。使用 phpinfo() 函数来检查您的安装中是否有对 PDO 的引用。

如果不存在 PDO ODBC 条目,则需要确保您的安装包括 PDO 扩展和 ODBC 驱动程序。要在 Windows 上执行此操作,请取消注释 php.ini 中的行 extension=php_pdo_odbc.dll,重新启动 Apache,然后再次尝试连接到数据库。

安装驱动程序后,phpinfo() 的输出应包含如下信息:https ://www.diigo.com/item/image/5kc39/hdse

http://i.stack.imgur.com/Zwp2W.png

于 2016-02-14T11:46:58.190 回答
2

您确定 odbc 连接器创建良好吗?如果没有,请再次检查“创建 ODBC 连接”步骤

编辑:没有来自php.net的 DSN 的连接

// 微软访问

$connection = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=$mdbFilename", $user, $password);

在您的情况下,如果您的文件名是北风并且您的文件扩展名为 mdb:

$connection = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=northwind", "", "");
于 2013-11-06T08:39:09.977 回答
1

如果需要安装,请参考:

https://www.microsoft.com/en-us/download/details.aspx?id=54920

于 2020-04-15T08:45:53.530 回答
0

如果您在 XAMPP 环境中遇到连接问题,我建议取消注释php.ini文件中的以下条目。

extension = odbc

没有它我收到一个错误:Uncaught pdoexception: could not find driver

于 2020-05-16T14:30:17.013 回答