Как связать PHP с базой данных Microsoft Access

В настоящее время я сталкиваюсь с новой проблемой разработки сайта с использованием Microsoft Access в качестве основной базы данных вместо mysql. Я раньше не пользовался MS Access, и мне хотелось бы узнать, как это сделать. Я просмотрел веб-сайт w3c в W3schools, но код выдает ошибку.

Предупреждение: odbc_connect() [function.odbc-connect]: ошибка SQL: [Microsoft][Диспетчер драйверов ODBC] Не найдено имя источника данных и не указан драйвер по умолчанию, состояние SQL IM002 в SQLConnect в C:\Users\NNALI\Desktop\root\test.php в строке 2

и эта ошибка

Предупреждение: odbc_exec() ожидает, что параметр 1 будет ресурсом, логическое значение указано в C:\Users\NNALI\Desktop\Breweries\root\test.php в строке 4

Я застрял и не знаю, что делать, я был бы признателен за любую помощь в этом.

<?php
    $conc = odbc_connect("northwind", "","");
    $sql  = "Select * From customers";
    $rs   = odbc_exec($conn, $sql);
?>

Выше код, который я использовал

4 ответа

Если вы только начинаете работу с новым проектом, я бы посоветовал вам использовать PDO вместо старого odbc_exec() подход. Вот простой пример:

<?php
$bits = 8 * PHP_INT_SIZE;
echo "(Info: This script is running as $bits-bit.)\r\n\r\n";

$connStr = 
        'odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};' .
        'Dbq=C:\\Users\\Gord\\Desktop\\foo.accdb;';

$dbh = new PDO($connStr);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql = 
        "SELECT AgentName FROM Agents " .
        "WHERE ID < ? AND AgentName <> ?";
$sth = $dbh->prepare($sql);

// query parameter value(s)
$params = array(
        5,
        'Homer'
        );

$sth->execute($params);

while ($row = $sth->fetch()) {
    echo $row['AgentName'] . "\r\n";
}

Проблема в простой опечатке. Вы назвали свою переменную 'conc' в строке 2, но затем ссылались на 'conn' в строке 4.

<?php
    $dbName = $_SERVER["DOCUMENT_ROOT"] . "products\products.mdb";
    if (!file_exists($dbName)) {
       die("Could not find database file.");
    }
    $db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$dbName; Uid=; Pwd=;");

Успешное соединение позволит выполнять команды SQL из PHP для чтения или записи базы данных. Однако, если вы получаете сообщение об ошибке "PDOException Не удалось найти драйвер", вероятно, драйвер PDO ODBC не установлен. Используйте функцию phpinfo() для проверки вашей установки на наличие ссылок на PDO.

Если запись для ODBC PDO отсутствует, вам необходимо убедиться, что ваша установка включает расширение PDO и драйверы ODBC. Чтобы сделать это в Windows, раскомментируйте строку extension=php_pdo_odbc.dll в php.ini, перезапустите Apache и попробуйте снова подключиться к базе данных.

При установленном драйвере выходные данные phpinfo() должны содержать следующую информацию: https://www.diigo.com/item/image/5kc39/hdse

https://stackru.com/images/e1c012717197534ba5d6040de4234ead5a6e05b2.png

Вы уверены, что разъем odbc хорошо создан? если нет, то снова проверьте шаг "Создайте соединение ODBC"

РЕДАКТИРОВАТЬ: подключение без DSN от php.net

// Microsoft Access

$connection = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=$mdbFilename", $user, $password);

в вашем случае это может быть, если ваше имя файла - Northwind и ваше расширение файла mdb:

$connection = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=northwind", "", "");

Если вам нужно установить, обратитесь к:

https://www.microsoft.com/en-us/download/details.aspx?id=54920

Если у вас возникают проблемы с подключением в среде XAMPP, я предлагаю раскомментировать следующую запись в php.ini файл.

extension = odbc

Без него я получил ошибку: Uncaught pdoexception: could not find driver

Другие вопросы по тегам