To jest mój pierwszy post na tym forum.
W temacie php i mssql jestem początkujący.
Mam problem, być może lamerski, ale nie potrafię sobie dać z nim rady.
Otóż napisałem prostą procedurkę w sql:
CREATE procedure produkt_kat_dost @kategoria varchar(30)=NULL, @dostawca varchar(30)='exotic%' AS IF @kategoria IS NULL begin print 'Proszę podać z jakiej kategorii szukamy produktów' print 'Na przykład: prod_kat_dost `seafood`, `exotic%`' print 'Nie musisz określać dostawcy - jest domyślny' RETURN end SELECT categoryname, productname, companyname FROM categories WHERE categoryname LIKE @kategoria AND companyname LIKE @dostawca
Jak widać zwraca ona krotki albo (jeśli nie podamy kategorii) message .
To co skleciłem w php wygląda następująco (zmienne-argumenty procedury są pobierane w formularzu):
<?php mssql_connect ('serwer',login', 'hasło') ; mssql_select_db ('northwind'); $wynik=mssql_query("exec produkt_kat_dost '%', '%'"); $str=mssql_get_last_message(); echo $str; print "<table border='1'>"; print "<tr><td>Kategoria</td><td>Produkt</td><td>Dostawca</td></tr>"; while($rekord = mssql_fetch_array($wynik)) { $kat=$rekord[0]; $prod=$rekord[1]; $dost=$rekord[2]; print "<tr><td>$kat</td><td>$prod</td><td>$dost</td></tr>"; } print "</table>"; ?>
Jeśli argumentami procedury jest % % to wszystko gra. Gdy je usuniemy mssql generuje komunikat (nie error). W każdym razie i tu i tu wynik jest true.
Oprócz tego mssql_get_last_message() odbiera tylko ostatnią linijkę komunikatu:
Nie musisz określać dostawcy - jest domyślny.
Chciałbym w 2 przypadku wyświetlić całość komunikatu i zatrzymać wykonanie kodu przed printem tabelki
(generowany jest Warning: mssql_fetch_array(): supplied argument is not a valid MS SQL-result resource)
Jak to zrobić, tego nie wiem. Przeszukałem to forum i inne strony, ale niestety nic nie znalazłem.
Pozdrowienia dla wszystkich