【发布时间】:2016-07-24 20:58:28
【问题描述】:
我的 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 位的。我不确定它是否与系统和驱动器类型或我的语法或我需要安装的某些驱动程序有关。我只想将表单中的数据插入计算机上的数据库中。
【问题讨论】:
-
拥有您的 PHP 脚本
echo (8 * PHP_INT_SIZE) . "-bit<br/>";。它显示什么? -
显示 32 位。我认为这是 32 位和 64 位版本的 OBCD 混淆的问题。
-
是的,几乎可以肯定这是一个“位”问题。但是,由于您的 PHP 代码在 32 位环境中运行并且您正在打开一个 .mdb 文件,您可以使用
Driver={Microsoft Access Driver (*.mdb)}(没有, *.accdb)并且它应该可以工作。 (还要注意有一个空格:Driver (。) -
天哪....那个空间修好了!谢谢上帝,谢谢。我起得太晚了试图解决这个问题!成功了!
标签: php mysql ms-access pdo odbc