Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ODBC PDO返回“未接收数据”_Php_Linux_Pdo_Odbc_Dsn - Fatal编程技术网

Php ODBC PDO返回“未接收数据”

Php ODBC PDO返回“未接收数据”,php,linux,pdo,odbc,dsn,Php,Linux,Pdo,Odbc,Dsn,我正在使用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 [dashboard] Description = Dashboard Driver

我正在使用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
[dashboard]
Description = Dashboard
Driver = MDBToolsODBC
Servername = localhost
Database = /mnt/inetpub/databases/dashboard.mdb
Username = 
Password = 
我的odbc.ini如下所示

[MDBToolsODBC]
Description=MDBTools Driver
Driver=/usr/lib64/libmdbodbc.so.0.0.0
FileUseage=1
Threading=1
[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仪表板时,我得到

我不知道如何解决这个问题,因为这是我第一次使用任何形式的linux

下面是我如何从数据库中调出信息的

在需要数据库信息的文件中,我使用

<?php
    include("inc/config.php");
?>
允许加载HTML和CSS,但当然不会从数据库中提取任何数据。这就是我认为某种连接字符串存在问题的原因

我正在尝试执行一个简单的SQL查询,就像这样,这是一个比我需要在开发中运行和使用的查询简单得多的查询,但是如果我能得到像这样简单的东西,我就可以解决其余的问题

$problems = $db->prepare("SELECT problems.id FROM problems;");
$problems->execute();
$result = $problems->fetchColumn();
echo $result;

编辑:我发现我试图查询的表中存在“分段错误”。其他表似乎工作正常

我快速搜索了您的查询,发现:

我想您可能需要清除浏览器缓存/尝试其他浏览器


另一个选项是通过命令行php/your/script/path进行尝试,看看它是否能成功运行。

数据源的关键在于将配置存储在odbc.ini中

应该足够了,如果它不起作用,您需要获取错误,读取错误并修复,命令可以工作,所以将用户名和密码放在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));
}

你能发布你用来提供信息的代码吗?@cwscribner我在文章底部添加了一些额外的信息。我认为,问题不在于如何提取数据的SQL,而在于连接字符串本身,如上所述。谢谢。你解决问题了吗?我已经尝试过清除缓存,并跨越Chrome、Firefox和Internet Explorer。但是,在命令行中运行调用连接字符串的文件会导致第行出错:Segmentation Fault附近的语法错误。有些文件由于某种原因被删掉了,但这有点帮助。在检查另一个文件时,它在第行显示错误:problems.start附近的语法错误。probems.start是我的SQL查询的一部分,因此我可能错误地认为它是连接字符串,实际上是我的SQL语句。如果没有用户名和密码,odbc.ini中的用户名和密码是否应保留为空?执行上述操作仍然会导致web浏览器说无法加载网页,因为服务器未发送任何数据。错误代码:ERR_EMPTY_RESPONSEFill in password只是为了安全起见如果我输入了错误的DSN,相应的错误消息将显示SQLSTATE[IM002]。如果我输入正确的仪表板,则不会显示PHP错误消息,而是显示浏览器错误消息。我不知道如何诊断。这听起来更像是浏览器问题,而不是PDO问题,因为连接工作。我开始认为这是由于数据库中的一个大表导致的分段故障。使用isql执行查询,例如从largetable工作的select*,但当我在isql中执行帮助largetable时,我会遇到分段错误。我已经能够通过简单的查询成功地查询其他表。
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));
}