Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Access][SQL][PHP]Praca na pliku .mdb
Forum PHP.pl > Forum > Przedszkole
djjbenus
Witam,

mam problem z połączeniem się z plikiem bazdowanym .mdb.

Próbuję się połączyć poprzez

  1. $conn = new COM("ADODB.Connection") or die("Cannot start ADO");
  2. $conn->Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=C:\\xampp\\htdocs\\studia\\integracja\\upload\\mdb\\baza.accdb");


ale niestety wywala mi błąd:

Fatal error: Uncaught exception 'com_exception' with message '<b>Source:</b> Microsoft OLE DB Provider for ODBC Drivers<br/><b>Description:</b> [Microsoft][Sterownik ODBC Microsoft Access ] Nie mo?na otworzy? bazy danych '(nieznane)'. Aplikacja nie rozpoznaje tej bazy danych lub plik jest uszkodzony.' in C:\xampp\htdocs\studia\integracja\engine\mdb.php:2 Stack trace: #0 C:\xampp\htdocs\studia\integracja\engine\mdb.php(2): com->Open('DRIVER={Microso...') #1 C:\xampp\htdocs\studia\integracja\index.php(29): include('C:\xampp\htdocs...') #2 {main} thrown in C:\xampp\htdocs\studia\integracja\engine\mdb.php on line 2

i nie bardzo wiem czy tutaj chodzi o fakt, że brakuje sterownika czy PDO nie obsługuje tego rozszerzenia na serwerze?

A może jest jakiś inny lepszy sposób na takie połączenie ?
ghastblood
  1. //ścieżka do bazy danych
  2. $dbName = "upload/mdb/baza.mdb"; // w przykadku kiedy skrypt jest wykononywany z katalogu "integracja"
  3. //sprawdza czy plik istnie
  4. if (file_exists($dbName)) {
  5. $db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$dbName; Uid=; Pwd=;");
  6. } else {
  7. die("Could not find database file.");
  8. }


sprawdz przez phpinfo czy masz takie ustawienia



niestety nie mam opcji tego sprawdzić gdyż jestem w pracy, jak wróce do domu to sprawdzę kod.
djjbenus


Mam coś takiego... sądziłem że wszystko jest ok...

Dodatkowo teraz wprowadziłem kod , który napisałeś i dostałem coś takiego:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY024] SQLDriverConnect: -1023 [Microsoft][Sterownik ODBC Microsoft Access ] '(nieznane)' nie jest poprawn? ?cie?k?. Sprawd?, czy nazwa ?cie?ki jest wprowadzona poprawnie oraz czy istnieje po??czenie z serwerem, na kt?rym jest przechowywany plik.' in C:\xampp\htdocs\studia\integracja\engine\mdb.php:20 Stack trace: #0 C:\xampp\htdocs\studia\integracja\engine\mdb.php(20): PDO->__construct('odbc:DRIVER={Mi...') #1 C:\xampp\htdocs\studia\integracja\index.php(29): include('C:\xampp\htdocs...') #2 {main} thrown in C:\xampp\htdocs\studia\integracja\engine\mdb.php on line 20
ghastblood
"A successful connection will allow SQL commands to be executed from PHP to read or write the database. If, however, you get the error message “PDOException Could not find driver” then it’s likely that the PDO ODBC driver is not installed."

Powinno banglać bo masz aktywne zainstalowane ODBC.

spróbuj użyć realpath

  1. realpath($dbName)


możesz usunąc też Uid i Pwd

  1. $db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=".realpath($dbName));


sprawdz również ścieżki skąd wywołujesz połaczenie
djjbenus
Ale nie działa czyli problem leży w sterownikach pod Winem... liczyłem na to że to akurat nie to i mniej zabawy będę miał...

  1.  
  2. //ścieżka do bazy danych
  3. $dbName = realpath("upload/mdb/baza.mdb"); // w przykadku kiedy skrypt jest wykononywany z katalogu "integracja"
  4. var_dump( $dbName );
  5. //sprawdza czy plik istnie
  6. if (file_exists($dbName)) {
  7. $db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$dbName; ");
  8. } else {
  9. die("Could not find database file.");
  10. }
  11.  
  12. $sql = " SELECT * FROM `procesory` ";
  13.  
  14. $data = $db->query( $sql );
  15. var_dump( $data );
  16.  


Chyba się udało smile.gif po wykonaniu kodu powyżej dostałem :

string(53) "C:\xampp\htdocs\studia\integracja\upload\mdb\baza.mdb" object(PDOStatement)#10 (1) { ["queryString"]=> string(27) " SELECT * FROM `procesory` " }

Dziękuję za pomoc smile.gif
ghastblood
sprawdzę u siebie swój kod jak wrócę do domu i podeśle tobie jak nie uda mi się znaleźc rozwiązania bo nie jestem w stanie uwieżyć żeby to była wina samego sterownika a widze że korzystasz z xamppa z którym nigdy nie miałem takich problemów.
djjbenus
Okej to czekam na wieści smile.gif
ghastblood
dopiero dotarłem do domu

  1. <?php
  2. //ścieżka do bazy danych
  3. $dbName = realpath("baza.mdb"); // w przykadku kiedy skrypt jest wykononywany z katalogu "integracja"
  4. // var_dump( $dbName );
  5. //sprawdza czy plik istnie
  6. if (file_exists($dbName)) {
  7. $db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=".$dbName."; ");
  8. } else {
  9. die("Could not find database file.");
  10. }
  11.  
  12. $sql = " SELECT * FROM Campaign_table ";
  13.  
  14. $data = $db->query( $sql );
  15. $r = $data->fetchAll(PDO::FETCH_ASSOC);
  16.  
  17. // var_dump($r);
  18.  
  19. echo $r[0]['Email_Address'];
  20. ?>
  21.  


u mnie śmiga ten kod
djjbenus
U mnie wszystko już jest okej smile.gif w poprzednim poście to napisałem edytując go.

Dzięki wielkie za pomoc smile.gif plusik poleciał smile.gif można zamknąć smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.