2014-10-03 12 views
3

Я использую CentOS 6.5 для создания соединения PDO ODBC с файлом .mdb Microsoft Access через PHP.ODBC PDO, возвращающий «Нет данных»

Я использую 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; 

EDIT: я определил, что есть «Сегментация Fault» в таблице Я пытаюсь запросить. Другие таблицы работают нормально!

+1

вы можете разместить код, который вы используете, чтобы попытаться обслуживать информацию? – Chad

+0

@cwscribner Я добавил дополнительную информацию в нижней части сообщения. Проблема, я считаю, не связана с SQL, как я извлекаю данные, но сама строка соединения, как объяснялось выше. Благодарю. –

+0

Вы решили проблему? – Dimas

ответ

0

Я сделал быстрый поиск по вашему запросу и нашел это:

http://www.wix.com/support/html5/ugc/1f678e95-c707-45c8-90ca-86a48ee98a38/2d8fe37b-cc02-4582-97da-9a93d5426a55

Я думаю, вы могли бы хотеть, чтобы очистить кэш браузера/попробуйте другой браузер.

Другой вариант - попробовать его через командную строку # php/your/script/path и посмотреть, успешно ли он выполняется таким образом.

+0

Я попытался очистить кеш и через Chrome, Firefox и Internet Explorer. Однако при запуске файла, вызывающего строку подключения в командной строке, возникает ошибка в строке: ошибка синтаксиса рядом (ошибка сегментации). Некоторые из них вырезаны по какой-либо причине, но это полезно. –

+0

При проверке другого файла это показывает ошибку в строке: синтаксическая ошибка около проблем.start. probems.start является частью моего SQL-запроса, поэтому, возможно, я ошибался, думая, что это строка соединения, и наводит на мысль мой оператор SQL. –

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)); 
} 
+0

Если имя пользователя и пароль останутся пустыми в oDBC.ini, если нет имени пользователя и пароля Выполнение выше по-прежнему приводит в веб-браузерах, говоря Невозможно загрузить веб-страницу, так как сервер не посылала данные кода Error:. ERR_EMPTY_RESPONSE –

+0

Заполните пароль только, чтобы быть сейф – meda

+0

Если я введите неправильное DSN, соответствующее сообщение об ошибке показывает SQLSTATE [IM002]. Если я поставлю правильный, приборной панели, сообщение об ошибке PHP не отображается, вместо этого отображается сообщение об ошибке браузера. Я не уверен, как диагностировать это. –

 Смежные вопросы

  • Нет связанных вопросов^_^