PHP и MS Access

Как мы можем подключить сценарий PHP к файлу MS Access (.mdb)?

Я попытался включить следующий код PHP:

$db_path = $_SERVER['DOCUMENT_ROOT'] . '\WebUpdate\' . $file_name . '.mdb';
$cfg_dsn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " . $db_path;
$odbcconnect = odbc_connect($cfg_dsn, '', '');

Но это не удалось, и я получил следующее сообщение об ошибке:

 Warning: odbc_connect() [function.odbc-connect]: SQL error: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified, SQL state IM002 in SQLConnect in C:\web\WebUpdate\index.php on line 41

Это: '\ We Update \' опечатка? Вы избегаете одной косой черты, а не другой.

Remi Despres-Smyth 22.09.2008 18:03
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
4 637
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

Вот пример подключения и простого выбора ...

<?php
$db_conn = new COM("ADODB.Connection");
$connstr = "DRIVER = {Microsoft Access Driver (*.mdb)}; DBQ = ". realpath("./Northwind.mdb").";";
$db_conn->open($connstr);
$rS = $db_conn->execute("SELECT * FROM Employees");
$f1 =  $rS->Fields(0);
$f2 =  $rS->Fields(1);
while (!$rS->EOF)
{
    print $f1->value." ".$f2->value."<br />\n";
    $rS->MoveNext();
}
$rS->Close();
$db_conn->Close();
?> 

В имени файла я смотрю на '\ WebUpdate \' - похоже, у вас есть одна обратная косая черта в начале и две в конце. Возможно, вам не хватает обратной косой черты в начале?

$db_path = $_SERVER['DOCUMENT_ROOT'] . '\WebUpdate\' . $file_name . '.mdb';

замените обратную косую черту на использование косой черты. '/ WebUpdate /'.

похоже проблема с разделителями путей. ISTR, что вы должны передавать обратную косую черту, а не прямую косую черту

Для меня работает следующее - с файлом MDB в корневом веб-каталоге с именем db4

    $defdir = str_replace("/", "\", $_SERVER["DOCUMENT_ROOT"]);
    $dbq    =    $defdir . "\db4.mdb";
if    (!file_exists($dbq)) { die("Database file $dbq does not exist"); }

    $dsn = "DRIVER=Microsoft Access Driver (*.mdb);UID=admin;UserCommitSync=Yes;Threads=3;SafeTransactions=0;PageTimeout=5;MaxScanRows=8;MaxBufferSize=2048;FIL=MS Access;DriverId=25;DefaultDir=$defdir;DBQ=$dbq";
    $odbc_conn = odbc_connect($dsn,"","")
        or die("Could not connect to Access database $dsn");

Я не уверен, является ли это нарушением передовых практик или безопасности, но я хотел бы отказаться от этого предложения:

настроить соединение ODBC и включить пароль базы данных в предварительные настройки odbc. присвойте odbc conn имя DSN и сохраните.

в вашем коде просто настройте соединение, например:

try {
  $conn = @odbc_connect("DSNName", "", "", "SQL_CUR_USE_ODBC");
  // un and pw parameters are passed as empty strings since the DSN 
  // has knowledge of the password already.
  // 4th parameter is optional

  $exec = @odbc_exec($conn, $insert) or die ("exec error");
  echo "success!";
}
catch (Exception $e) {
  echo $e->getMessage();
} // end try catch

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