konto usunięte

Temat: zapytanie do MS SQL

Witam, mam problem z 1 zapytaniem do MS SQL, serwer nie zwraca zadnego rezultatu, skladnia jak najbardziej poprawna ... serwer IIS, PHP 5.2.13 nie wiem czy to wina jakiś bibliotek, ale inne zapytanie:
$kat = mssql_query('SELECT KATEGORIA,NR_KATEGORII FROM
WAPRO.dbo.VW_KATEGORIE');

Do serwera łacze sie:
<?php
mssql_connect('nazwa_serwera','user', 'pass'); mssql_select_db('database');?>

tutaj zapytanie co nie zwraca nic:
<?php	$id = 0;
$id = $_GET["kat_nr"];
if( $id>0)
{ $mssqlquery = "SELECT SYMBOL_PRODUKTU
,WAPRO.dbo.VW_STANY_MAGAZYNOWE2.NAZWA
,WAPRO.dbo.VW_STANY_MAGAZYNOWE2.KOLOR,cast (CENA_BRUTTO as numeric
(27,2)) as CENA_BRUTTO
FROM WAPRO.dbo.VW_STANY_MAGAZYNOWE2 INNER
JOIN WAPRO.dbo.CENA_ARTYKULU_V ON
WAPRO.dbo.VW_STANY_MAGAZYNOWE2.ID_ARTYKULU = WAPRO.dbo.CENA_ARTYKULU_V.ID_ARTYKULU
WHERE WAPRO.dbo.VW_STANY_MAGAZYNOWE2.NR_KATEGORII='$id'";
$q = mssql_query($mssqlquery);?>

Zastanawiałem się też czy to nie może wina php.ini, lecz to co powinienem mieć włączone (extension=php_mssql.dll) jest odhaszowaane, nie wiem w czym tkwi problem. Ma ktoś jakiś pomysł na to ? jak to rozwiazac?Michał B. edytował(a) ten post dnia 29.06.10 o godzinie 23:16

konto usunięte

Temat: zapytanie do MS SQL

Michał B.:
Witam, mam problem z 1 zapytaniem do MS SQL, serwer nie zwraca zadnego rezultatu, skladnia jak najbardziej poprawna ... serwer IIS, PHP 5.2.13 nie wiem czy to wina jakiś bibliotek, ale inne zapytanie:\r\n
$kat = mssql_query(\'SELECT KATEGORIA,NR_KATEGORII FROM WAPRO.dbo.VW_KATEGORIE\');
\r\n\r\nDo serwera łacze sie:\r\n
<?php\r\n        mssql_connect(\'nazwa_serwera\', 	[/quote]> \'user\', \'pass\');\r\n        mssql_select_db(\'database\');\r\n 	[quote]  ?>\r\n
\r\ntutaj zapytanie co nie zwraca nic:\r\n
<?php\r\n			$id = 0;\r\n			$id = 	[/quote]> $_GET[\"kat_nr\"];\r\n            if( $id>0){\r\n\r\n           	[quote]     $mssqlquery = \"SELECT SYMBOL_PRODUKTU\r\n                        ,WAPRO.dbo.VW_STANY_MAGAZYNOWE2.NAZWA\r\n                        ,WAPRO.dbo.VW_STANY_MAGAZYNOWE2.KOLOR\r\n                        ,cast (CENA_BRUTTO as numeric (27,2)) as CENA_BRUTTO\r\n                        FROM WAPRO.dbo.VW_STANY_MAGAZYNOWE2 INNER JOIN WAPRO.dbo.CENA_ARTYKULU_V\r\n                        ON WAPRO.dbo.VW_STANY_MAGAZYNOWE2.ID_ARTYKULU = WAPRO.dbo.CENA_ARTYKULU_V.ID_ARTYKULU\r\n                        WHERE WAPRO.dbo.VW_STANY_MAGAZYNOWE2.NR_KATEGORII=\'$id\'\";\r\n\r\n                $q = mssql_query($mssqlquery);\r\n                ?>
\r\n\r\nZastanawiałem się też czy to nie może wina php.ini, lecz to co powinienem mieć włączone (extension=php_mssql.dll) jest odhaszowaane, nie wiem w czym tkwi problem. Ma ktoś jakiś pomysł na to ? jak to rozwiazac?


skoro działasz na IIS -> windows skorzystaj z MSowej biblioteki
http://www.php.net/manual/en/function.mssql-connect.ph...

a patrząc na obecny kod to przypuszczam że masz problem z barkiem pliku ntwdblib.dll - poszukaj w sieci, skopjuj do jakiegoś katalogu systemowego - powinno pomóc

no i żeby być ścisłym masz jeszcze ODBC - działą z defaultu i COM i wywołanie ADO za pomocą czegoś takiego - można, jak ktoś lubi rozwiązania strikte MS, ale skoro to IIS....

konto usunięte

Temat: zapytanie do MS SQL

skoro działasz na IIS -> windows skorzystaj z MSowej biblioteki
http://www.php.net/manual/en/function.mssql-connect.ph...

Masz na mysli extension=php_sqlsrv_ts.dll ?
a patrząc na obecny kod to przypuszczam że masz problem z barkiem pliku ntwdblib.dll - poszukaj w sieci, skopjuj do jakiegoś katalogu systemowego - powinno pomóc

ntwdlib.dll akurat mam go, bo przy PHP for windows instaluje sie to domyslnie
no i żeby być ścisłym masz jeszcze ODBC - działą z defaultu i COM i wywołanie ADO za pomocą czegoś takiego - można, jak ktoś lubi rozwiązania strikte MS, ale skoro to IIS....

konto usunięte

Temat: zapytanie do MS SQL

Michał B.:
skoro działasz na IIS -> windows skorzystaj z MSowej biblioteki
http://www.php.net/manual/en/function.mssql-connect.ph...

Masz na mysli extension=php_sqlsrv_ts.dll ?

tak, ma większe możliwości niż standardowe rozszerzenie
a patrząc na obecny kod to przypuszczam że masz problem z barkiem pliku ntwdblib.dll - poszukaj w sieci, skopjuj do jakiegoś katalogu systemowego - powinno pomóc

ntwdlib.dll akurat mam go, bo przy PHP for windows instaluje sie to domyslnie

a co na to dependency walker?
http://www.dependencywalker.com/

i odhacz display_startup_errors, z defaultu jest off, więc nie wiesz czy rozszerzenie się ładuje poprawnie
no i żeby być ścisłym masz jeszcze ODBC - działą z defaultu i COM i wywołanie ADO za pomocą czegoś takiego - można, jak ktoś lubi rozwiązania strikte MS, ale skoro to IIS....
Wojciech Sznapka

Wojciech Sznapka CTO @ STS Zakłady
Bukmacherskie

Temat: zapytanie do MS SQL

spróbuj przez PDO i dblib

konto usunięte

Temat: zapytanie do MS SQL

Wojciech Sznapka:
spróbuj przez PDO i dblib

to rozwiązanie pod Linux-a czy Windows-a?
jeżeli pod Windowsa to raczej nie odpali w tej konfiguracji -> IIS + Windows
Wojciech Sznapka

Wojciech Sznapka CTO @ STS Zakłady
Bukmacherskie

Temat: zapytanie do MS SQL

pod linuksa

konto usunięte

Temat: zapytanie do MS SQL

http://msdn.microsoft.com/en-US/library/cc296182(v=SQL...
sterownik SQLSRV tyle że od strony PDO

<?php
$serverName = "(local)";
$database = "AdventureWorks";

// Get UID and PWD from application-specific files.
$uid = file_get_contents("C:\AppData\uid.txt");
$pwd = file_get_contents("C:\AppData\pwd.txt");

try {
$conn = new PDO( "sqlsrv:server=$serverName;Database = $database", $uid, $pwd);
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
}
catch( PDOException $e ) {
die( "Error connecting to SQL Server" );
}

echo "Connected to SQL Server\n";
$query = 'select * from Person.ContactType';
$stmt = $conn->query( $query );
while ( $row = $stmt->fetch( PDO::FETCH_ASSOC ) ){
print_r( $row );
}

// Free statement and connection resources.
$stmt = null;
$conn = null;
?>

konto usunięte

Temat: zapytanie do MS SQL

Przemysław R.:
http://msdn.microsoft.com/en-US/library/cc296182(v=SQL...
sterownik SQLSRV tyle że od strony PDO

<?php[/quote]>    $serverName = "(local)"; [quote]   $database = "AdventureWorks";

// Get UID and PWD from application-specific files.
$uid = file_get_contents("C:\AppData\uid.txt");
$pwd = file_get_contents("C:\AppData\pwd.txt");

try {
$conn = new PDO( "sqlsrv:server=$serverName;Database = $database", $uid, $pwd);
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
}
catch( PDOException $e ) {
die( "Error connecting to SQL Server" );
}

echo "Connected to SQL Server\n";
$query = 'select * from Person.ContactType';
$stmt = $conn->query( $query );
while ( $row = $stmt->fetch( PDO::FETCH_ASSOC ) ){
print_r( $row );
}

// Free statement and connection resources.
$stmt = null;
$conn = null;
?>


No i lipton, wywala error co prawda, ale nie wiem czy wpis w php.ini tyczy sie prawidlowej biblioteki:

[PHP_PDO]
extension=php_pdo.dll
?

konto usunięte

Temat: zapytanie do MS SQL

Michał B.:
No i lipton, wywala error co prawda, ale nie wiem czy wpis w php.ini tyczy sie prawidlowej biblioteki:

[PHP_PDO]
extension=php_pdo.dll
?

powinno zadziałać po załadowaniu obu bibliotek - tej od MS i PDO
Krzysztof N.

Krzysztof N. CEO. Aplikacje
internetowe i
mobilne. Symfony,
Zend.

Temat: zapytanie do MS SQL

Michał B.:
mam problem z 1 zapytaniem do MS SQL, serwer nie zwraca zadnego rezultatu, skladnia jak najbardziej poprawna ... serwer IIS, PHP 5.2.13 nie wiem czy to wina jakiś bibliotek
Sprawdź czy użytkownik za pomocą którego łączysz się do bazy:
<?php
mssql_connect('nazwa_serwera', 'user', 'pass');
mssql_select_db('database');
?>
ma prawa dostępu do bazy danych oraz do tabeli, z których chcesz pobrać dane. Spróbuj zalogować się za pomocą SQL Server Management Studio na jego login i hasło i wykonać zapytanie, które nie zwraca Ci żadnych wyników.Krzysztof N. edytował(a) ten post dnia 30.06.10 o godzinie 13:33

konto usunięte

Temat: zapytanie do MS SQL

Krzysztof N.:
Michał B.:
mam problem z 1 zapytaniem do MS SQL, serwer nie zwraca zadnego rezultatu, skladnia jak najbardziej poprawna ... serwer IIS, PHP 5.2.13 nie wiem czy to wina jakiś bibliotek
Sprawdź czy użytkownik za pomocą którego łączysz się do bazy:
<?php[/quote]> mssql_connect('nazwa_serwera', 'user', 'pass');[quote]mssql_select_db('database');
?>
ma prawa dostępu do bazy danych oraz do tabeli, z których chcesz pobrać dane. Spróbuj zalogować się za pomocą SQL Server Management Studio na jego login i hasło i wykonać zapytanie, które nie zwraca Ci żadnych wyników.Krzysztof N. edytował(a) ten post dnia 30.06.10 o godzinie 13:33


Sprawdzalem, ma.

konto usunięte

Temat: zapytanie do MS SQL

Michał B.:
Sprawdzalem, ma.

zapytam głupio co wypluwa jeżeli chodzi o MSSQL
phpinfo()

konto usunięte

Temat: zapytanie do MS SQL

Otoz po problemie, zainstalowalem xampp'a i zaczal mi wypluwac bledy.
Krok po kroku doszedlem, ze po

1. odhaszowanie w php.ini extension=php_mssql.dll dalo skutek "czytania" SQL Server
2. Do jednego widoku nie bylo uprawnien JEDNAK (stworzenie nowego usera zalatwilo sprawe)

Dzieki wszystkim za cenne rady.

BTW moze ktos na szybko powie jak wykorzystac iconv() ...
A mianowicie przy takim kodzie:

<?php
while ($r = mssql_fetch_assoc($q)) {
?>
<tr>
<td><?php echo $r['SYMBOL_PRODUKTU'];?></td>
<td><?php echo $r['NAZWA'];?></td>
<td><?php echo $r['CENA_BRUTTO']. '- PLN';?></td>
<td width="50" height="10" bgcolor="<?php echo $r['KOLOR']; ?>"></td>
</tr>
<?php

moge gdzies iconv tu wsadzic, czy gdzies przy SELECT ?Michał B. edytował(a) ten post dnia 30.06.10 o godzinie 21:30
Bartosz Raczek

Bartosz Raczek .NET Software
Developer

Temat: zapytanie do MS SQL

Np:


<?php echo iconv('UTF-8','ISO-8859-2',$r['SYMBOL_PRODUKTU']);?>

konto usunięte

Temat: zapytanie do MS SQL

Dzieki Bartku, ale poradzilem sobie z tym w konfiguracji php.ini, ustawiajac strone kodowa mssql i kodowanie ustawilem takie samo w php

konto usunięte

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'.

pozdrawiamDawid Adamczewski edytował(a) ten post dnia 24.03.11 o godzinie 05:33

Następna dyskusja:

Zapytanie SQL z sortowanie...




Wyślij zaproszenie do