MS Access : Establish connection from external system - php

I want to establish a connection to ms access server from external system using php pdo. I have tried it in the same server by using the following code
$dbName = $_SERVER["DOCUMENT_ROOT"] . "test\test.mdb";
if (!file_exists($dbName)) {
die("Could not find database file.");
}
$db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$dbName; Uid=; Pwd=;");
I want to know how to access the ms access which is in the external server. Have tried to mention the server in the above code like
$db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)}; SERVER={ipaddress};DBQ=$dbName; Uid=; Pwd=;");
but there is no response. Can any one please explain me how establish connection to ms access external server using php pdo. We have to do anything with driver?

The machine running PHP must be able to "see" an SMB (Windows File Sharing) shared folder that contains the Access database file on the other machine. PHP can then open it using a UNC path, e.g.
Dbq=\\servername\sharename\foldername\filename.mdb
Note that there is no such thing as a Server= parameter in an Access ODBC connection string.

Related

How to set up an ODBC for MS Access 2016?

I am fairly new to databases and also my English is very bad so don't mind my silly mistakes. I am using:
MS Access 2016 to create a local database named as tc.accdb
XAMPP to provide local host connectivity
this php code to check whether local connectivity is achieved or not:
<?php
$con = odbc_connect( "tc" , "" , "" );
if($con)
{
echo "Connected";
}
else
{
echo "Failed" ;
}
?>
But I just cannot set up Microsoft Access driver for my database. Under administrator tools >.....> System DSN, there exist Microsoft Access driver for (*.mdb) .But since I'm using Access 2016, my database has (.accdb) extension.
I've also tried saving my database as (database.mdb) to avoid extension confilicts but I've used some Office16-specific features so it can't be saved as a database with (.mdb) extension.
Note
Using (.mdb) connectivity with my (.accdb) database just didn't do the job as when I try to run the check code it gives me following error.
try this
$connStr = 'odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};' .
'Dbq=C:\\Users\\Igor\\Desktop\\example.accdb;';
$dbh = new PDO($connStr);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
good luck

Cannot open mapped network drive file PHP

I am trying to load a file from a mapped network drive on Windows Server 2008. The mapped drive is S:\ and the file is conqueror.mdb. I am using the IP address I am seeing in File Explorer but it still says it cannot find the file.
$dbName = "\\xx.xx.xxx.xx\S:\conqueror.mdb";
if (!file_exists($dbName)) {
die("Could not find database file.");
}
$conn = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$dbName; Uid=; Pwd=pass;");

Connecting to a MS Access database

Someone asked me to do some research to achieve the following result, maybe you guys can help me out an suggest me some tips.
We have a local server and there are different 'jobs' on it ( in a MS Access ) Database.
Now we want to create a platform where other users can check their "job status" with different parameters ( field names etc ) from the MS Access database.
I am looking for the best practice, how to connect to this database from everywhere in the world. I already did some research and found the following links:
http://phpmaster.com/using-an-access-database-with-php/
http://www.php.net/manual/en/function.odbc-connect.php
How can I connect between a web-application and that MS Access database
Can I update it realtime
What kind of protocol does the servers has to support to intereact with a website?
Currently the server can be reached from outside via a VPN connection.
A piece of code I've already tried :
try{
$dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=Custos_TAB.accdb;Uid=Admin");
}catch(PDOException $e){
echo $e->getMessage();
}
I received the following error : "could not find driver".
Try this, assuming you have the PDO odbc driver installed and enabled on the web server.
$user='Admin';
$password='';
$mdbFilename="Custos_TAB.accdb";
$connection = odbc_connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=$mdbFilename", $user, $password);
$sql="SELECT * FROM [tblHere]";
$rs=odbc_exec($connection,$sql);
//do stuff here
odbc_close($connection);
or
$user='Admin';
$password='';
/*if you have a path here such as c:\db\Custos_TAB.accdb, make sure to use double
backslashes, (i.e "c:\\db\\Custos_TAB.accdb")*/
$mdbFilename="Custos_TAB.accdb";
$conn = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=$mdbFilename;Uid=$user='Admin';Pwd=$password;");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Stop running services first (if there's any)
Open the php.ini file and uncomment the extension for php_pdo_odbc
Start services again (if needed)
Make sure you correctly locate your database in Dbq=Custos_TAB.accdb
//Just an example in my case
Dbq=C:\Users\Server\Documents\Db1.accdb

Connect to a Microsoft Access .mdb on a network from Xampp local

I'm trying to connect microsoft access database that resides on a mapped network drive.
If I copy the .mdb file and put it locally I have no problem connecting and running queries but as soon as I try connect to the live version on the network I fail.
Here is what I have
//Works
try {
$dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=C:/xampp/htdocs/inventory/ORSDATA.mdb;Uid=; Pwd=;");
}
catch (PDOException $e)
{
//Does Not work
try {
$dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=cerfs1/f:/orsdata/ORSDATA.mdb;Uid=; Pwd=;");
}
catch (PDOException $e)
{
Where cerfs1 is the name of the server f: is the actual server drive letter /orsdata is the server folder and orsdata.mdb is the database.
I have tried numerous variations using shared drive letter Y:/orsdata.mdb and IP address (10.50.10.12) instead cerfs1. I get the following errors:
Dbq=//cerfs1/orsdata/ORSDATA.mdb -> SQLSTATE[HY000] SQLDriverConnect: -1811 [Microsoft][ODBC Microsoft Access Driver] Could not find file '(unknown)'.
Dbq=//cerfs1/f:/orsdata/ORSDATA.mdb ->SQLSTATE[HY024] SQLDriverConnect: -1023 [Microsoft][ODBC Microsoft Access Driver] '(unknown)' is not a valid path. Make sure that the path name is spelled correctly and that you are connected to the server on which the file resides.
Dbq=cerfs1/f:/orsdata/ORSDATA.mdb ->SQLSTATE[HY000] SQLDriverConnect: -1044 [Microsoft][ODBC Microsoft Access Driver] Not a valid file name.
Dbq=10.50.10.12/f:/orsdata/ORSDATA.mdb -> SQLSTATE[HY000] SQLDriverConnect: -1044 [Microsoft][ODBC Microsoft Access Driver] Not a valid file name.
//Shared Drive is Y which is mapped to F:/orsdata
Dbq=Y:/ORSDATA.mdb -> SQLSTATE[HY024] SQLDriverConnect: -1023 [Microsoft][ODBC Microsoft Access Driver] '(unknown)' is not a valid path. Make sure that the path name is spelled correctly and that you are connected to the server on which the file resides.
I read as much as I possible could about trying to connect to a mapped drive / database but nothing I have tried seems to work. The odd thing is I can go in through Excel on my local computer and pull the data from the network drive, but not through php / xampp. Any help is very much appreciated.
I have following for connecting to database file on local drive:
$dbName = $_SERVER["DOCUMENT_ROOT"] . "\Includes\fileName.mdb";
And those for connecting to database file on network drive:
$dbName = "\\\\server\folder\application\fileName.mdb";
$dbName = "P:\application\fileName.mdb";
Followed by:
new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$dbName; Uid=; Pwd;");
All of them are working.

What will be connection string to Access database file with PHP

I installed WAMP, I have access database file in project folder, but don't have installed Access on my computer.
Can I read and update Access file with PHP even I don't have installed Access?
And what will be connection string to Access database file?
I really need help with this.
All you need is the PHP api for ODBC.
Here is the example from the docs itself:
<?php
// Microsoft SQL Server using the SQL Native Client 10.0 ODBC Driver - allows connection to SQL 7, 2000, 2005 and 2008
$connection = odbc_connect("Driver={SQL Server Native Client 10.0};Server=$server;Database=$database;", $user, $password);
// Microsoft Access
$connection = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=$mdbFilename", $user, $password);
// Microsoft Excel
$excelFile = realpath('C:/ExcelData.xls');
$excelDir = dirname($excelFile);
$connection = odbc_connect("Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=$excelFile;DefaultDir=$excelDir" , '', '');
?>
// Microsoft Access
Open the Administrative Tools icon in your Control Panel.
Double-click on the Data Sources (ODBC) icon inside.
Choose the System DSN tab.
Click on Add in the System DSN tab.
Select the Microsoft Access Driver.
Click Finish.
In the next screen, click Select to locate the database.
Give the database a Data Source Name (DSN).
Click OK.
$dsn='database.accdb';
$username='';
$password='';
$connect=odbc_connect($dsn, $username, $password);
I'v found this link with a tutorial on how to do it. Be careful that things work differently in windows and UNIX environment, but since you are using a WAMP you should have no problems
<?php
$db = $_SERVER["DOCUMENT_ROOT"] ."/AccessDatabase/reg.accdb"; //AccessDatabase is folder in htdocs where the database is store
if (!file_exists($db))
{
die("No database file.");
}
$dbNew = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=$db; Uid=; Pwd=;");
$sql = "select * from reg"; //reg is table name
$rs = $dbNew->query($sql);
while($result = $rs->fetch())
{
echo $result[0].": ".$result[1].": ".$result[2]."<br />";
}
?>
If u got error like pdo ODBC Drivers not installed
just go to php.ini and find extension = pdo_ODBC Driver and remove the comment(;)
after that restart the apache

Categories