Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PEAR DB.php łączenie z bazą mssql
Forum PHP.pl > Forum > Serwery WWW > Apache
qoonieczko
Witam,

Mam zainstalowanego xamppa na windowsie7. Zainstalowałem sobie DP.php
(http://pear.php.net/package/DB/download)

Mam taki kod:
  1. <?php
  2. require_once 'DB.php';
  3. function polacz() {
  4. $dsn = 'mssql://login:haslo@serwer/baza';
  5.  
  6. $options = array ('debug' => 5, 'portability' => DB_PORTABILITY_ALL, 'persistent' => true);
  7. $db = & DB :: connect($dsn, $options);
  8.  
  9.  
  10. if (PEAR :: isError($db)) {
  11. echo 'Standard Message: '.$db->getMessage()."<br>";
  12. echo 'Standard Code: '.$db->getCode()."<br>";
  13. echo 'DBMS/User Message: '.$db->getUserInfo()."<br>";
  14. echo 'DBMS/Debug Message: '.$db->getDebugInfo()."<br>";
  15. }
  16.  
  17.  
  18. return $db;
  19. }
  20.  
  21.  
  22. $db = polacz();
  23.  
  24. $sql = "SELECT * FROM wusr_IT_HR_map with (nolock) where location LIKE '4%%' and res_id>0 and mainloc='007'";
  25.  
  26. $res = & $db->query($sql);
  27.  
  28. if (PEAR :: isError($res)) {
  29. /* echo 'Standard Message: '.$res->getMessage()."<br>";
  30. echo 'Standard Code: '.$res->getCode()."<br>";
  31. echo 'DBMS/User Message: '.$res->getUserInfo()."<br>";
  32. echo 'DBMS/Debug Message: '.$res->getDebugInfo()."<br>";*/
  33. }
  34. ?>


Dostaje komunikat:

Standard Message: DB Error: extension not found
Standard Code: -25
DBMS/User Message: [DB Error: extension not found] ** mssql://login:haslo@serwer/baza
DBMS/Debug Message: [DB Error: extension not found] ** mssql://login:haslo@serwer/baza

Ma ktoś pomysł co jeszcze powinienem zrobić, zainstalować? Dodam, że mam serwer na linuxie i wszystko działa. Niestety nie ja go konfigurowałem. Będę wdzięczny za wskazówki/rozwiązania.

Pozdrawiam!
nospor
Musisz na serwerze zainstalowac mssql for php.

ps: po grzyba brniesz w tego PEAR DB? Nie lepiej uzywac PDO?
qoonieczko
ale co dokładnie powinienem zainstalować? php_sqlsrv_56_ts.dll? php_mssql.dll? Z żadnym z tych plików nie działa. Mam pliki w ext i dodane w php.ini.

Czym się różni DB od PDO? Jakie są plusy, że radzisz przesiadkę? Łatwiej się to konfiguruje? tongue.gif
viking
Na początek dlatego:
Cytat
This package has been superseded, but is still maintained for bugs and security fixes. Use MDB2 instead.


PDO to natywne rozszerzenie wszędzie używane. A nie jakiś przestarzały, niewspierany pakiet zewnętrzny.
Pokaż logi serwera.
qoonieczko
logi:
http://1drv.ms/1RPBYTK

Próbowałem przez tego PDO i mam taki komunikat:
Failed to get DB handle: could not find driver

mam zainstalowane:
php_pdo_sqlsrv_56_ts.dll

w phpinfo() pokazuje:
PDO drivers mysql, sqlsrv, sqlite
viking
W sumie błąd dość wyrażny:
[15-Dec-2015 15:33:33 UTC] PHP Warning: PHP Startup: pdo_sqlsrv: Unable to initialize module
Module compiled with module API=20121212
PHP compiled with module API=20131226
These options need to match
in Unknown on line 0

Skonczyłem właśnie pisanie https://wwwgo.pl/article/20/konfiguracja_se...cgi_pod_windows
Jutro postaram się dodać jeszcze do tego Oracle.
qoonieczko
A jak zaradzić temu problemowi? Bo z Twojego artykułu nie jestem w stanie tego wyciągnąćsmile.gif mam php 5.6.15, plik php_pdo_sqlsrv_56_ts.dll, w php.ini extension=php_pdo_sqlsrv_56_ts.dll, Thread Safety enabled. Wydaje mi się, że wszystko jest ok.

Chyba wiem w czym może być problem. W phpinfo mam:
Configure Command :
cscript /nologo configure.js "--enable-snapshot-build" "--disable-isapi" "--enable-debug-pack" "--without-mssql" "--without-pdo-mssql" "--without-pi3web" "--with-pdo-oci=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,shared" "--with-oci8-12c=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,shared" "--enable-object-out-dir=../obj/" "--enable-com-dotnet=shared" "--with-mcrypt=static" "--without-analyzer" "--with-pgo"

"--without-mssql" "--without-pdo-mssql" - wie ktoś jak/gdzie mogę to zmienić?
viking
Musiałbyś przekompilować smile.gif
Przed chwilą sprawdziłem. U mnie na tej konfiguracji z artykułu bez problemu zadziałało. Pobrane https://www.microsoft.com/en-us/download/de...s.aspx?id=20098 - niestety z tego co widzę są to wyłącznie pakiety 32-bit. Do PHP7 jeszcze nawet nie ma.
Do ext wrzucone php_sqlsrv_56_ts.dll oraz php_pdo_sqlsrv_56_ts.dll
Następnie zamiast PHP7 - http://windows.php.net/downloads/releases/...32-VC11-x86.zip
Restart apache i śmiga:
Kod
PDO drivers     mysql, pgsql, sqlite, sqlsrv
pdo_sqlsrv support    enabled


Specjalnie dla ciebie: https://wwwgo.pl/advice/show/8/obsluga_bazy...ql_server_w_php
qoonieczko
DZięki Ci wielkie! Działa:) Męczyłem się jeszcze, bo okazało się, że muszą być dwa slashe przed podaniem instancji. Ale teraz mam problem na linuxie. Ogólnie postawiłem sobie serwer na lokalnym kompie i chce tam tworzyć, a potem przenieść to na serwer linuxowy. Na linuxie chyba nie ma sqlsrv, co? Mam zainstalowene:
PDO drivers dblib, odbc
Da się połączyć za pomocą, któregoś z tych do bazy mssql z linuxa?
  1. <?php
  2.  
  3. $dsn = "odbc:Server=10.1.1.25//tetabis;Database=ESY001";
  4. //$dsn = "odbc:Server=10.1.1.25:1683;Database=ESY001";
  5. //$dsn = "odbc:Server=10.1.1.25,1683;Database=ESY001";
  6. try {
  7. $conn = new PDO( $dsn, 'login', 'pass');
  8. $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
  9. $sth = $conn->prepare("select fullname from humres where res_id='618'");
  10. $sth->execute();
  11. $result = $sth->fetchAll();
  12. print_r($result);
  13. } catch(Exception $e) {
  14. echo $e->getMessage();
  15. }
  16. ?>

Przy czymś takim mam komunikat:

SQLSTATE[IM002] SQLDriverConnect: 0 [unixODBC][Driver Manager]Data source name not found, and no default driver specified

Jak podmienie odbc na dblib to mam:

SQLSTATE[HY000] Unable to connect: Adaptive Server is unavailable or does not exist (severity 9)


Jakieś pomysły?
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-2024 Invision Power Services, Inc.