我使用CentOS 6.5通过PHP创建与Microsoft Access .mdb文件的PDO ODBC连接。
我正在使用MDBTools和unixODBC。
我的odbcinst.ini看起来像这样
[MDBToolsODBC]
Description=MDBTools Driver
Driver=/usr/lib64/libmdbodbc.so.0.0.0
FileUseage=1
Threading=1
我的odbc.ini看起来像这样
[dashboard]
Description = Dashboard
Driver = MDBToolsODBC
Servername = localhost
Database = /mnt/inetpub/databases/dashboard.mdb
Username =
Password =
我正在尝试通过PHP连接
$db = new PDO("odbc:DRIVER=MDBToolsODBC;DSN=dashboard;");
收到错误消息数小时后,我终于能够解决所有问题了,但现在当我尝试连接时,Google Chrome会说
No data received
Unable to load the webpage because the server sent no data.
Error code: ERR_EMPTY_RESPONSE
我不确定这是否是因为我的DSN设置。当我做isql dashboard
时,我得到了
+----------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+----------------------------------+
不确定如何解决这个问题,因为这是我第一次使用任何形式的linux。
以下是我尝试从数据库中调用信息的方法。
在需要数据库信息的文件中,我使用
<?php
include("inc/config.php");
?>
注释掉连接字符串
//$db = new PDO("odbc:DRIVER=MDBToolsODBC;DSN=dashboard;");
允许加载HTML和CSS,但当然不会从数据库中提取数据。这就是我认为某种连接字符串存在问题的原因。
我试图像这样执行一个简单的SQL查询,这是一个比我在开发中运行和使用的查询要简单得多的查询,但如果我能得到像这样简单的工作我可以弄清楚剩下的。
$problems = $db->prepare("SELECT problems.id FROM problems;");
$problems->execute();
$result = $problems->fetchColumn();
echo $result;
编辑:我发现有一个“分段错误”&#39;在表中我试图查询。其他表似乎工作正常!
答案 0 :(得分:1)
数据源的重点是您将配置存储在odbc.ini
。
try{
$db = new PDO("odbc:dashboard");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $ex){
echo 'Connection failed: ' . $e->getMessage();
die(var_dump($ex));
}
应该足够了,如果它不起作用你需要得到错误,阅读错误并修复,命令有效,所以将用户名和密码放在odbc.ini
并试一试
用户名和密码也是PDO构造函数的参数,您可以通过指定所有内容来尝试连接:
try {
$db = new PDO("odbc:dashboard", $username, $password, array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)
);
}
catch(PDOException $ex){
echo 'Connection failed: ' . $e->getMessage();
die(var_dump($ex));
}
答案 1 :(得分:0)
我快速搜索了您的查询,发现了这个:
我想您可能想要清除浏览器缓存/尝试其他浏览器。
另一种选择是通过命令行#php / your / script / path尝试它,看看它是否成功运行。