Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MSSQL][PHP] php 5.6.3 MSSQL 2008 r2 sqlsrv_connect false, błąd przy połączenie z bazą
noche
post 13.04.2017, 07:21:31
Post #1





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 20.02.2015

Ostrzeżenie: (0%)
-----


Witam, spotkałem się a tym problemem i brakuje mi już pomysłów jak go "ugryść"
przy połączeniu do bazy funkcją sqlsrv_connect zawsze jest FALSE

Kod
ini_set( 'extension', 'php_sqlsrv_54_nts.dll' );
ini_set( 'extension', 'php_pdo_sqlsrv_54_nts.dll' );
echo rand( 10, 99 ) .' ';
$serverName = "(local)\SQLGP";  
$connectionInfo = array( "Database"=>"2008", "UID"=>"tester", "PWD"=>"123");

/* Connect using Windows Authentication. */  
$conn = sqlsrv_connect( $serverName, $connectionInfo);  
var_dump($conn);   //// FALSE

phpinfo();


wszystko ( MSSQL, PHP ) jest na lokalnym komputerze, baza to MSSQL 2008 R2, PHP według phpinfo to 5.6.3 na XAMPP'ie
standardowo nie było sterowników do mssql więc pobrałem z strony https://www.microsoft.com/en-us/download/de...s.aspx?id=20098
w zakładce System Requirements jest opisik:
Version 4.0 supports PHP 7.0+ on Windows and Linux
Version 3.2 supports PHP 5.6, 5.5, and 5.4 on Windows
Version 3.1 supports PHP 5.5 and 5.4 on Windows
Version 3.0 supports PHP 5.4 on Windows

wiec do katalogu ext wrzuciłem pliki z paczki 3.2
i próbuje z powyższym skryptem ale cały czas jest FALSE
proszę o podpowiedz








Go to the top of the page
+Quote Post
viking
post 13.04.2017, 07:31:19
Post #2





Grupa: Zarejestrowani
Postów: 6 377
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Dlaczego nie dodasz po prostu do php.ini?
http://php.net/manual/en/function.dl.php


--------------------
Go to the top of the page
+Quote Post
noche
post 13.04.2017, 08:12:29
Post #3





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 20.02.2015

Ostrzeżenie: (0%)
-----


dodałem do php.ini
XAMPP przyjął bez błędów

kombinowałem z wersją sterownika, w nazwie sterownika jest 56, 54, 55
kombinowałem z uprawnieniami
wymuszone logowanie - $connectionInfo = array( "Database"=>"2008", "UID"=>"tester", "PWD"=>"123");
autologowanie - $connectionInfo = array( "Database"=>"2008" );

mogę w jakiś sposób sprawdzić czy dany host istnieje ? $serverName = "(local)\SQLGP";
funkcja nie zwraca żadnego błędu i nie wiem który element zawodzi: zły host, zła baza, zły login lub hasło
w PDO co zgłosi ?
Go to the top of the page
+Quote Post
viking
post 13.04.2017, 08:20:15
Post #4





Grupa: Zarejestrowani
Postów: 6 377
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Włącz raportowanie błędów na początek, sprawdź co zwraca phpinfo (czy wczytało rozszerzenie).
Instalacja całego serwera + SQL Server


--------------------
Go to the top of the page
+Quote Post
noche
post 13.04.2017, 09:31:55
Post #5





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 20.02.2015

Ostrzeżenie: (0%)
-----


phpinfo();
PDO
PDO drivers mysql, odbc, pgsql, sqlsrv

pdo_sqlsrv
pdo_sqlsrv support enabled

sqlsrv
sqlsrv support enabled

po ostatnim poście zmontowałem proste PDO
$pdo = new PDO("sqlsrv:Server=localhost;Database=2008", "tester", "123");
wyrzuciło mi błąd ODBC i link http://go.microsoft.com/fwlink/?LinkId=163712
i coś się ruszyło arrowheadsmiley.png
teraz var_dump pokazuje resource(2) of type (SQL Server Connection) resource(3) of type (SQL Server Statement)

powodem był brakujący sterownik ODBC facepalmxd.gif
przykład, może się komuś przyda

Kod
$sql = "SELECT * FROM sPogoda ";

echo rand( 10, 99 ) .' <br /> ';
$serverName = "(local)\SQLGP";  
$connectionInfo = array( "Database" => "2008", "UID" => "tester", "PWD" => "123" );
$conn1 = sqlsrv_connect( $serverName, $connectionInfo );  var_dump( $conn1 );
echo '<br />';
if( $conn1 === false ){
     die( print_r( sqlsrv_errors(), true )); }

$stmt = sqlsrv_query( $conn1, $sql, array(), array( "Scrollable" => 'keyset' ));
echo '<pre>'; print_r( sqlsrv_fetch_array( $stmt )); echo '</pre>';
echo '<br />';
if( $stmt === false ){
     die( print_r( sqlsrv_errors(), true )); }


    
echo '<br />';
echo '<br />';
echo '<br /> PDO ';
$dsn = "sqlsrv:Server=(local)\SQLGP;Database=2008";
try {
    $conn2 = new PDO( $dsn, 'tester', '123' );
    $conn2->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    $sth = $conn2->prepare( $sql );
    $sth->execute();
    $result = $sth->fetchAll();
    echo '<pre>'; print_r( $result ); echo '</pre>';
} catch(Exception $e){
    echo $e->getMessage(); }
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.06.2025 - 02:25