Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MSSQL][PHP] połączenie i wykonanie zapytania - warning
Forum PHP.pl > Forum > Przedszkole
-Venus-
Witam,

mam do przerobienia mój stary projekt oparty o mssql. Na serwerze klienta jest teraz sqlExpress i prosty copy paste nie działa ( pdo nie chce ze mną rozmawiać )
napisałem coś takiego
  1. function connect( $query )
  2. {
  3. //print $query; /only for debug
  4. $SQL_user = "user";
  5. $SQL_password = "pass";
  6. $SQL_database = "my_db";
  7.  
  8. $link = mssql_connect('my_server', $SQL_user, $SQL_password);
  9. if( !$link )
  10. {
  11. print "Error - Connecting to database failed";
  12. }
  13. else
  14. {
  15. if( !mssql_select_db($SQL_database, $link) )
  16. {
  17. print "Couldn't use database";
  18. }
  19. else
  20. {
  21. $result = mssql_query ( $query ) or
  22. die ("Error: Couldn't read from Data Base");
  23. mssql_close( $link );
  24. }
  25. }
  26. return $result;
  27. }


i dalej np.

  1. $result = connect( 'jakis tam select' );
  2. print_r($result); // tutaj mam Resource id #5 i to z tego co pamiętam jest OK
  3. while($row = mssql_fetch_array($result))
  4. {
  5. echo $row[0]; // tutaj dostaję Warning: mssql_fetch_array(): 5 is not a valid MS SQL-result resource in C:\wamp\www\orderDisPatcher.php on line 23
  6. }

dawno nie używałem tego typu połączenia, czy tu widzicie coś czeskiego? albo coś?
busterek
A spróbuj przy nawiązywaniu połączenia wpisać łącznie z nazwą instancji czyli

  1. 'servername\inistancename'


mmmmmmm
connect('jakis tam select') questionmark.gif
Chyba query?
A jeśli tak, to komunikat mowi, ze zapytanie się nie wykonało prawidłowo. Prawdopodobnie gdzieś w nim masz błąd.
-Venus-
"jakis tam select" to np. select columna from tabela i zapytanie chodzi bo wlepiłem je do Management Studio
busterek
I jeszcze jedna kwestia do przetestowania.
Zamiast

  1. echo $row[0];


spróbuj

  1. echo $row['nazwa_pola'];


No i podstawa. Sprawdź czy zmienna $row coś zawiera.

  1. var_dump($row);
busterek
bostaf ale connect jest funkcją, która zawiera w sobie mssql_query. Resource jest zwracany poprawnie. Mnie ciekawi, czy po wykonaniu mssql_fetch_array coś jest w zmiennej $row.
bostaf
@busterek
Cytat(busterek @ 3.01.2014, 11:15:29 ) *
bostaf ale connect jest funkcją, która zawiera w sobie mssql_query. Resource jest zwracany poprawnie. Mnie ciekawi, czy po wykonaniu mssql_fetch_array coś jest w zmiennej $row.

Racja racja, przegapiłem to, dzięki za zwrócenie uwagi. Wywalę poprzedniego posta, żeby nie wprowadzać zamieszania.
Tak czy inaczej zastanawia mnie ten komunikat o niewłaściwym zasobie, zwłaszcza, że tamta funkcja wygląda poprawnie, i wcześniej rzuciłaby komunikatami o błędach niż wykonała niepoprawne zapytanie.
Też jestem ciekaw co będzie w $row, ale podejrzewam, że nic - skoro mssql_fetch_array() nie dostała poprawnego argumentu, to nie może zwrócić poprawnego wyniku.

@-Venus- to trochę ślepy strzał, ale spróbuj wyrzucić z funkcji connect wiersz 24: "mssql_close( $link );". Może to zamknięcie połączenia zbyt wcześnie w jakiś sposób nie pozwala zwrócić funkcji connect zmiennej $result. Nie wiem, warto spróbować.
busterek
Cytat(bostaf @ 3.01.2014, 11:45:52 ) *
@-Venus- to trochę ślepy strzał, ale spróbuj wyrzucić z funkcji connect wiersz 24: "mssql_close( $link );". Może to zamknięcie połączenia zbyt wcześnie w jakiś sposób nie pozwala zwrócić funkcji connect zmiennej $result. Nie wiem, warto spróbować.


Możesz mieć rację. Połączenie z bazą jest już zamknięte, a skrypt chce się dobrać do danych. Ja przeoczyłem to zamknięcie połączenia. :-D.
-Venus-
Nie to nie to, przecież wynik zapytania przypisuję do zmiennej i dopiero zamykam połączenie.
Dla pewności sprawdziłem i to samo.
Postanowiłem uruchomić to PDO za wszelką cenę bo nie chce mi się przerabiać wszelkich operacji na bazie na to cudo.


john_doe
spróbuj na sqlSrv w ConfigurationManager wejść w opcję NetworkProtocols i:
1. Named Pipes ustaw na Enable
2. TCP/IP Enable
3. Potem properties i zakładka IP Addresses i włącz interfejsy wszystkie lub te które potrzebujesz

obstawiam, że dzięki temu PDO poleci
-Venus-
Dzięki john_doe działa PDO jak należy!
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.