Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MSSQL][PHP] php 5.6.3 MSSQL 2008 r2 sqlsrv_connect false
Forum PHP.pl > Forum > Przedszkole
noche
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








viking
Dlaczego nie dodasz po prostu do php.ini?
http://php.net/manual/en/function.dl.php
noche
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 ?
viking
Włącz raportowanie błędów na początek, sprawdź co zwraca phpinfo (czy wczytało rozszerzenie).
Instalacja całego serwera + SQL Server
noche
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(); }
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.