Problemer med at forbinde med PHP til accessbase
Jeg får følgende fejl når jeg forsøger at forbinde til en access databaseodbc_connect(): SQL error: [Microsoft][ODBC Microsoft Access-driver] Microsoft Jet-databasemotoren kan ikke åbne filen "(ukendt)". Den er allerede åbnet med udelt adgang af en anden bruger, eller du skal have tilladelse til at vise dataene., SQL state S1000 in SQLConnect in
Jeg har oprettet et dsn der peger på den rigtige database. Jeg har forsøgt at logge på både med og uden password, men det resulterer i samme fejl.
Jeg har tjekket om det er noget med at den ikke kan "finde" filen ved at indtaste et dsn navn som med sikkerhed ikke er der, men det resulterer i stedet i følgende fejl:
Warning: 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\online_booking\test_access.php on line 4
Da basen ligger på et netværksdrev har jeg forsøgt at bruge ADOdb til PHP jvf. anbefalingen i flg. stump jeg fandt på php.net:
As always Microsoft is clueless... I've been trying to connect to an Access database on a W2K on the network (not a local file, but mapped on the V: drive), via ODBC.
All I got is this message:
Warning: SQL error: [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., SQL state S1009 in SQLConnect in d:\apache\cm\creaart.php on line 13
So... I started looking al around and looks like the ODBC driver has some severe problems:
1. It cannot access a Access database via a mapped drive. And this is for ANY application, name it PHP, Coldfusion, whatever
2. You cannot make a system DSN with a UNC (\\Server\resource), so you must map the drive
Cute isn't it?
So... I quit on ODBC and went via ADO, this is the code that works:
=== CODE ===
$db = '\\\\server\\resource\\db.mdb';
$conn = new COM('ADODB.Connection');
$conn->Open("DRIVER={Driver do Microsoft Access (*.mdb)}; DBQ=$db");
// Driver do Microsoft Access (*.mdb)
// must be the name in your odbc drivers, the one you get
// from the Data Sources (ODBC).
// In this case, I'm in Mexico but the driver name is in portuguese, thanks Microsoft.
$sql = 'SELECT username FROM tblUsuarios';
$res = $conn->Execute($sql);
while (!$res->EOF)
{
print $res->Fields['username']->Value . "<br>";
$res->MoveNext();
}
$res->Close();
$conn->Close();
$res = null;
$conn = null;
=== /CODE ===
Men det resulterer blot i den samme fejl som ovenfor.
Er der nogen der har en idé til en evt. løsning på mit problem?