How to connect php file to ms access?

PHP and MS Access

  • How can we connect a PHP script to MS Access (.mdb) file? I tried by including following PHP code: $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, '', ''); But it failed and I received following error message: 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

  • Answer:

    Here's a sample for a connect and a simple select... <?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(); ?>

VarunGupta at Stack Overflow Visit the source

Was this solution helpful to you?

Other answers

In the filename, I'm looking at '\WebUpdate\' - it looks like you have one backslash at the beginning at two at the end. Are you maybe missing a backslash at the beginning?

Jesse Millikan

$db_path = $_SERVER['DOCUMENT_ROOT'] . '\WebUpdate\' . $file_name . '.mdb'; replace the backslashes with slashes use . '/WebUpdate/' .

Pop Catalin

it looks like a problem with the path seperators. ISTR that you have to pass backslashes not forward slashes The following works for me - with an MDB file in the webroot called 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");

Richard Harrison

I'm not certain if this is a violation of best practices or security, but I would like to throw out this suggestion: set up an ODBC connection and include the database's password in the odbc advance settings. give the odbc conn a DSN name then save. in your code, just set up the connection like: 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

m42

Related Q & A:

Just Added Q & A:

Find solution

For every problem there is a solution! Proved by Solucija.

  • Got an issue and looking for advice?

  • Ask Solucija to search every corner of the Web for help.

  • Get workable solutions and helpful tips in a moment.

Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.