Temat: zapytanie do MS SQL
Zaznaczylbym jeszcze ze IIS nie jest kompatybiliny ze starym driverem php_mssql.dll, MS od dawna planowal jego wycofanie, ze wzgledu na problemy uzytkownikow i wprowadzil swoj wlasny
sqlsrv.dll w 4 wersjach vc 6/9 NS/NTS.
Obslugiwany jest przez PHP5+, nizej juz tylko php_mssql.dll <- dobrze dziala z apachem, chociaz pod windows polecalbym IIS, jest 10 razy szybsze od apache na windowsie, jakoze ze apache defaultowo byl designowany pod linuxa.
Po kolejne, aby ruszyl Ci php_sqlsrv.dll musisz miec zainstalowany sql native client (sprawdz czy masz sqlncli.dll u siebie w systemie), badz co badz, trzeba sie troche nakombinowac aby to ruszyc, najlatwiej jest napisac wlasne ADO, gdybys jeszcze sie skusil na nowy driver upenij sie ze posiadasz jego prawidlowa wersje, masz małą sciąge
http://screenshooter.net/3645311/vnnsscc
Z resztą, jezeli do IIS dodasz WPI (Web Platform Installer), to wyszukaj sobie frazy sql, bedziesz widzial, zainstaluje wszystko pod Twoja wersje :)
uzywajac php_sqlsrv.dll, musisz miec wylaczony php_mssql.dll, inaczej bedzie konflikt i nic nie zadziała.
Sciagnij sobie najnowsze ADODB 5.11,
wybierz potrzebne pliki, w tym przypadku bedzie to mssqlnative.inc.php z katalogu drivers, mozesz zostawic wszystkie jak boisz sie wywalac.
podepnij sobie w odrebnym pliku, poza calym katalogiem ADODB5 te funkcyjke, przerob wedle uznania,
<?PHP
ini_set("display_errors", "1");
//include("wrapper/adodb-exceptions.inc.php");
require("includes/adodb5/adodb.inc.php");
define('ADODB_ASSOC_CASE', 1);
$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
$db = ADONewConnection($_config['db_type']);
$db->locale = 'us_english';
$db->debug = $_config['dbdebug'];
$rs = $db->PConnect($_config['db_host'], $_config['db_user'], $_config['db_pass'], $_config['db_name']) or die("Unable to connect!");
$db2 = $db;
?>
Troche ja ulepszylem, tlumaczyc chyba nie musze, za TYPE wstawiasz typ, dla starego php_mssql.dll byl typ mssql, a my tutaj uzyjemy mssqlnative.
Potem podemnij sobie pod to config w odrebnym pliku, mozna wyedytowac dane we funkcji na sztywno ale nie polecam,
$_config['db_host'] = 'IP_BAZY'; // mozesz dla nativa uzyc instance name, jezeli uzywasz defaultowego instace mozesz uzyc nazwy komputera, jezeli uzywasz wlasnego to COMPNAME/INSTANCENAME, jezeli uzywasz SQLEXPRESS to ./SQLEXPRESS
$_config['db_name'] = 'NAZWA_BAZY'; // Jezeli laczysz sie poprzez ODBC pozostawiasz to pole puste
$_config['db_user'] = 'NAZWA USERA DB';
$_config['db_pass'] = 'PASS USERA DB';
$_config['db_type'] = 'mssqlnative'; //wspomniany typ, wytlumacze to nizej.
i teraz tak, z ta funkcja mozesz uzyc wiekszosci typow laczenia sie do baz, wpisujac typ drivera z folderu drivers, np mysql, tez sie polaczysz.
Dla ciekawostki, jezeli chcialbys bezposrednio laczyc sie poprzez ODBC to uzyj takiej funkcji, chociaz ta wyzej jest tak universalna ze uzywam jej do wszystkiego ^.^
$dsn = "Driver={SQL Server};Server=".$_config['db_host'].";Database=".$_config['db_name'].";";
$db->Connect($dsn,$_config['db_user'],$_config['db_pass']);
PODSTAWA! lacz sie z bazą w ostatnim momencie, kiedy juz musisz, rozlaczaj sie odrazu, jak nie potrzebujesz placzenia.
hah, i to ja niby jestem koderem CPP, ASM, C.NET, ASP.NET? hah, w co za czasy, trzeba uczyc sie wszystkiego.
P.S. Jezeli uzywasz Windows Server to pamietaj o prawach dostepu do katalogow, czesto rozne problemy sie pojawiaja z tego to powodu.
Ja np teraz kombinuje dlaczego na IIS strona nie tworzy mi cache ^^ i to wlasnie ten powod wyzej xD
I dobrze skonfiguruj prawa uzytkownika bazy, dla testu uzywaj na poczatku 'sa'.
pozdrawiam
Dawid Adamczewski edytował(a) ten post dnia 24.03.11 o godzinie 05:33