Я использую 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;
РЕДАКТИРОВАТЬ: Я определил, что в таблице, в которой я пытаюсь выполнить запрос, есть «Ошибка сегментации». Другие таблицы работают нормально!
Весь смысл источника данных в том, что вы сохраняете свою конфигурацию в 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));
}
Я сделал быстрый поиск по вашему запросу и нашел это:
Я думаю, что вы можете очистить кеш браузера / попробовать другой браузер.
Другой вариант — попробовать его через командную строку # php / your / script / path и посмотреть, будет ли он успешно работать таким образом.