0

I am new to PHP as well as new to Ms-access database. I am trying to connect php server to ms access database dsnless as i have to give this to my friend. My both php file and ms database file are in same directory and they both are going to stay on localhost only. I am not able to understand the error.

I have 64 bit wamp version 2.4/Apache Version :2.4.4/PHP Version :5.4.16/ 64 bit windows 7 Also i have installed Microsoft Access Database Engine 2010 Redistributable from official site.

Here is my php code

<?php
echo (8 * PHP_INT_SIZE) . "-bit<br/>";
$user = "";
$password = "";
$mdbFilename= "C:\wamp\www\test\testdb.accdb";

$conn=$connection = odbc_connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=$mdbFilename", $user, $password);              ////<----line 10

if (!$conn) {
  exit("Connection Failed: " . $conn);
}

$sql="SELECT * FROM testdb";
$rs=odbc_exec($conn,$sql);
if (!$rs) {
  exit("Error in SQL");
}

while (odbc_fetch_row($rs))
{
    $json_output[] = odbc_result($rs, "test");
    print(json_encode($json_output));

}
odbc_close($conn);
?>  

Here is my error

Warning: odbc_connect(): SQL error: [Microsoft][ODBC Microsoft Access Driver] Not a valid file name., SQL state S1000 in SQLConnect in C:\wamp\www\test\working.php on line 10
6
  • 1
    Have you tried doubling up your '\' in the filespec. Commented Oct 15, 2014 at 9:26
  • Are you still running 32-bit PHP (as in your previous question here)? Commented Oct 15, 2014 at 10:03
  • @GordThompson Yes I am still running 32 bit version as 64 bit version is still experimental and not ready for commercial use. Commented Oct 15, 2014 at 13:03
  • @bohica Yes i did and this is how my path looked C:\\wamp\www\test\testdb.accdb but it didn't worked Commented Oct 15, 2014 at 13:04
  • 1
    Your example above only doubled the first \ and not all back slashes. Commented Oct 15, 2014 at 13:21

1 Answer 1

0

This is what I'm using to connect with a Ms-Access:

<?php
    $conn = new COM("ADODB.Connection");
    $dns = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=".realpath("./youraccessdb.mdb").";";
    $conn->open($dns);
    $rs = $conn->execute("SELECT * FROM table");
    $field =  $rs->Fields(0);

    while (!$rs->EOF) {
      print $f1->value . "\n";
      $rs->MoveNext();
    }
    $rs->Close();
    $conn->Close();
?>

Hope this help.

Sign up to request clarification or add additional context in comments.

9 Comments

I am getting this error Fatal error: Class 'COM' not found in C:\wamp\www\test\test3.php on line 4
You have to add extension=php_com_dotnet.dll to your php.ini to load the com/dotnet module.
I did that and now i am getting this error Fatal error: Uncaught exception 'com_exception' with message '<b>Source:</b> Microsoft OLE DB Provider for ODBC Drivers<br/><b>Description:</b> Operation was canceled.' in C:\wamp\www\test\test3.php on line 6
i am getting two errors and this is second error com_exception: <b>Source:</b> Microsoft OLE DB Provider for ODBC Drivers<br/><b>Description:</b> Operation was canceled. in C:\wamp\www\test\test3.php on line 6
this is line 6 $conn->open($dns);
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.