我使用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;");
经过几个小时的错误消息,我终于能够解决所有问题,但现在当我尝试连接时,谷歌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;
编辑:我发现我试图查询的表中存在"分段故障"。其他桌子似乎工作正常!
我快速搜索了您的查询,发现了以下内容:
http://www.wix.com/support/html5/ugc/1f678e95-c707-45c8-90ca-86a48ee98a38/2d8fe37b-cc02-4582-97da-9a93d5426a55
我想你可能想清除浏览器缓存/尝试其他浏览器。
另一种选择是通过命令行#php/your/script/path进行尝试,看看它是否以这种方式成功运行。
数据源的全部意义在于将配置存储在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));
}