MSSQL-re kapcsolódás
2014-12-02T01:33:00+01:00
2014-12-08T09:33:47+01:00
2022-08-18T03:50:37+02:00
ShadowMember
Hello
A gépemre fel van telepítve a Microsoft SQL Server 2012 Enterprise és azt szeretném,hogy lehessen PHP-val rá csatlakozni.
Én így próbáltam:

db_connect.php

$serverName = "MSSQLSERVER"; //serverName\instanceName $connectionInfo = array( "Database"=>"MuOnline", "UID"=>"Tesztfiok", "PWD"=>"teszt01"); $mssql = sqlsrv_connect( $serverName, $connectionInfo); if( $mssql ) { echo "Connection established.<br />"; }else{ die( print_r( sqlsrv_errors(), true)); }
lekeres.php

ini_set('display_errors', 'On'); error_reporting(E_ALL | E_STRICT); include_once 'db_connect.php'; if (isset($_POST['username'], $_POST['kod'])) { $kod = $_POST['kod']; $username = $_POST['username']; if ($kod == "12345") { if ($stmt = $mssql->prepare("SELECT * FROM MEMB_INFO WHERE memb___id = ?")) { $stmt->bind_param('s', $username); // Execute the prepared query. $stmt->execute(); $stmt->store_result(); if ($stmt->num_rows == 1) { echo "Code: 808"; } else { echo "Code: 807"; } } else { // Could not create a prepared statement echo "Sikertelen lekérés"; exit(); } } else { echo "Nem jó kód"; } } else { // The correct POST variables were not sent to this page. echo "Haha"; exit();
A webszerverre fel van telepítve a PHP 5.6.0 és az sqlsrv extension.
Hiába adom meg a kapcsolódási adatokat "helyesen" akkor is ezt az üzenetet kapom:

Array ( [0] => Array ( [0] => 08001 [SQLSTATE] => 08001 [1] => 53
=> 53 [2] => [Microsoft][SQL Server Native Client 11.0]Named Pipes Provider: Could not open a connection to SQL Server [53]. [message] => [Microsoft][SQL Server Native Client 11.0]Named Pipes Provider: Could not open a connection to SQL Server [53]. ) [1] => Array ( [0] => HYT00 [SQLSTATE] => HYT00 [1] => 0
=> 0 [2] => [Microsoft][SQL Server Native Client 11.0]Login timeout expired [message] => [Microsoft][SQL Server Native Client 11.0]Login timeout expired ) [2] => Array ( [0] => 08001 [SQLSTATE] => 08001 [1] => 53
=> 53 [2] => [Microsoft][SQL Server Native Client 11.0]A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online. [message] => [Microsoft][SQL Server Native Client 11.0]A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online. )
)

Köszönöm előre is a segítséget.
Mutasd a teljes hozzászólást!
Hátha:

PHP Fatal error: Call to undefined function mssql_connect()

plusz:

enable mssql in php.ini

;extension=php_mssql.dll
to

extension=php_mssql.dll
Mutasd a teljes hozzászólást!

  • [Microsoft][SQL Server Native Client 11.0]A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online. [message] => [Microsoft][SQL Server Native Client 11.0]A  network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online.
     

    A fenti hiba sort tudod értelmezni? Egyáltalán fut az mssql server?
    Mutasd a teljes hozzászólást!
  • Ja, fut. A Name Pipe is be van kapcsolva,+ tcp is be van kapcsolva + remote is + firewall-ban engedélyezve van a 1433 port is.
    Mutasd a teljes hozzászólást!
  • Mssql-ről elméleti tudásom van csak (mysql és postgresql használok), egy próbát megér:

    <?php ini_set('display_errors', 1); error_reporting(E_ALL); $myServer = "ip-address:1433/MSSQLSERVER"; $myUser = "username"; $myPass = "password"; $link = mssql_connect($myServer, $myUser, $myPass); if ( !$link ) { if ( function_exists('error_get_last') ) { var_dump(error_get_last()); } die('connection failed'); } ?>
    --[szerk: lehet, hogy nem jó a php mssql.dll  (a hibára rákeresve, most találtam)]--
    Mutasd a teljes hozzászólást!
  • Amit adtál az nem jó PHP 5.6.0-hoz,hiába raktam be próba képen az 5.5.12-es változatú mssql extension-t.
    Ezt kaptam:

    Call to undefined function mssql_connect()
    De viszont tovább keresgéltem a neten és azt írták,hogy nem elég a Service Pack 1 SQL Server-nek,kell még a Service Pack 2 is. :D
    Na remek,mondom. :P
    Mindenesetre köszönöm a segítséget. :)
    Akinek ugyan ilyen problémája lesz,annak azt tanácsolom,hogy elsőre frissítse be az SQL szerverét a legújabb verzióra és utána próbálkozni a kapcsolódással. :D
    Mutasd a teljes hozzászólást!
  • Sqlsrv esetén az mssql_ -el kezdődő fg-ek nem működnek. Helyettük sqlsrv_:
    PHP: SQLSRV - Manual

    Az sqlsrv jó, de lassú. Nekem a freeTDS jött be(mssql_ függvényeket használsz):
    Installing MSSQL for PHP - MoodleDocs
    De ehhez kell még a C:\ gyökér könyvtárba egy freetds.conf nevű fájl az UTF8 használatához.

    Bár nekem csak 5.5.9es php van, nem tudom van-e 5.6 hoz freeTDS.
    Mutasd a teljes hozzászólást!
  • Server is not found or not accessible

    $serverName = "localhost\\MSSQLSERVER";

    Ezt kéne megpróbálni...
    Mutasd a teljes hozzászólást!
  • A kapcsolódás helyesen így kéne, hogy legyen:
    $dsn = $host."\\".$instanceName.",".$port; $connectionInfo = array('Database' => $dbname, 'UID' => $user, 'PWD' => $pass); try{ $conn = sqlsrv_connect($dsn, $connenctionInfo); }catch(Exception $e){ echo $e->getMessage(); }
    Ha named instancot telepítettél SQL Serverből, akkor az instanceName-hez azt a nevet add meg, ha defaultot, akkor MSSQLSERVER vagy üres string. Hostként én az ip címet ajánlom megadni (a localhost ugye 127.0.0.1). A port alapból 1433.
    Vagy próbálhatod PDO-val is, ha feltetted és betöltötted azt a drivert is.


    @maleszbacsi:
    Sqlsrv esetén az mssql_ -el kezdődő fg-ek nem működnek.

    Ez így nem igaz. Amennyiben nincsenek betöltve az mssql_* függvényekhez szükséges dll-ek, akkor nem működnek. Megjegyzendő, hogy az mssql_* függvények nem támogatják az SQL Server 2008-t illetve az újabb verziókat, továbbá az újabb PHP verziókhoz nem készült dll (5.2 alatt még működött).
    Mutasd a teljes hozzászólást!
  • Megjegyzendő, hogy az mssql_* függvények nem támogatják az SQL Server 2008-t illetve az újabb verziókat

    Ezt cáfolom!

    Jelen esetben, sql server 2014(express) van a gépemen + xampp(php 5.5.9) és freeTDS-t használok.
    Mutasd a teljes hozzászólást!
  • Sose használtam freeTDS-t, de most utánanéztem és valóban, igazad van, megoldható.
    Mutasd a teljes hozzászólást!
  • 1: tuti hogy Enterprise, és nem Express? Csak mert mindkettőnek más-más a default instancia neve....

    2: próbáld ki SQL Management Studióval, ha működik, nézd meg a kapcsolati paramétereket

    3: a 1433-as portnál nemcsak TCP hanem UDP port is legyen nyitva.
    4: dinamikus port-kiosztás manuális kikapcsolása (Nem "üres", hanem "0" a megfelelő helyre.)

    5: ha még mindig nem, akkor szolgáltatásoknál Sql Server Agent engedélyezés, futtatás, SQL Man. Studióval teszt, ha OKé, kapcsolat paramétereinek feljegyzése.



    pl: lokális gép hívható "."(pont)-nak. Sőt, a default instancia is hívható '.'(pont)-nak. (Ilyenkor így nézne ki: a szerver neve: ".\.")  Sőt, ha lokálos gépen fut, akkor a szerver nevét nem kötelező megadni, tehát lehet "\.". Sőt, mivel nincs gépnév, ezért az elválasztó backslash sem kell, tehát maraqd a "." :)  Azzal együtt, nem javaslom, hogy ezt a jelőlés módot használd egy config-file-ban, mert ez tényleg csak lokális gépen default instanciával működik. De tesztelésre alkalamas lehet.
    Mutasd a teljes hozzászólást!
  • Hátha:

    PHP Fatal error: Call to undefined function mssql_connect()

    plusz:

    enable mssql in php.ini

    ;extension=php_mssql.dll
    to

    extension=php_mssql.dll
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd