ODBC PDO возвращает «Данные не получены»

Я использую CentOS 6.5 для создания PDO ODBC-соединения с файлом Microsoft Access .mdb через PHP.

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

РЕДАКТИРОВАТЬ: Я определил, что в таблице, в которой я пытаюсь выполнить запрос, есть «Ошибка сегментации». Другие таблицы работают нормально!

3

Решение

Весь смысл источника данных в том, что вы сохраняете свою конфигурацию в 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

Другие решения

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

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

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

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

0

По вопросам рекламы [email protected]