Avatar billede bohlke Nybegynder
17. september 2006 - 18:14

Problemer med at forbinde med PHP til accessbase

Jeg får følgende fejl når jeg forsøger at forbinde til en access database

odbc_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?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester