PHP无法连接到PDO ODBC驱动程序

时间:2016-04-05 05:07:31

标签: php mysql ms-access pdo odbc

我的php无法找到我的odbc驱动程序。我已经多次下载并重新安装了。任何人都可以帮我解决这个错误:

QLSTATE[IM002] SQLDriverConnect: 0 [Microsoft][ODBC Driver Manager] Data
source name not found and no default driver specified"

这是我的php代码:

$dbName = "C:\Users\David\Documents\SCHOOLNEW\Assignment5-PROG1800\database\as4.mdb";
if (!file_exists($dbName))
{
    die("Could not find database file.");
}
try 
{
    // Connect
    $dbh = new PDO("odbc:Driver={Microsoft Access Driver(*.mdb, *.accdb)};Dbq=C:\Users\David\Documents\SCHOOLNEW\Assignment5-PROG1800\database\as4.mdb;Uid=Admin");

    // INSERT data
    $count = $dbh->exec("INSERT INTO part(vendorNo,description,onHand,onOrder,cost,listPrice) VALUES ('$vendorNo', '$desc', '$onHand', '$onOrder', '$cost', '$listPrice')");

    // echo the number of affected rows
    echo $count;

    // close the database connection
    $dbh = null;

}

catch(PDOException $e)
{
    echo $e->getMessage();
} 

我正在运行php with apache on xampp。这一切都在本地机器上。我的系统是64位。我不确定它是否与系统和驱动器类型或我的语法或我需要安装的某些驱动程序有关。我只想将表单中的数据插入到计算机上的数据库中。

2 个答案:

答案 0 :(得分:2)

Driver={Microsoft Access Driver(*.mdb, *.accdb)}

不是有效的ODBC驱动程序名称,因为它缺少空格。新的“ACE”ODBC驱动程序的正确名称是

Driver={Microsoft Access Driver (*.mdb, *.accdb)}

但是,在这种情况下,PHP在32位环境中运行并尝试打开.mdb数据库,以便使用较旧的“Jet”ODBC驱动程序......

Driver={Microsoft Access Driver (*.mdb)}

......也会奏效。

答案 1 :(得分:0)

您可以在转义斜杠后放置路径,然后尝试: -

$dbName = "C:\\Users\\David\\Documents\\SCHOOLNEW\\Assignment5-PROG1800\\database\\as4.mdb";

在代码中提供的所有路径中转义斜杠,然后尝试。