Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MSSQL][PHP] połączenie i wykonanie zapytania - warning
--Venus--
post
Post #1





Goście







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ś?
Go to the top of the page
+Quote Post
busterek
post
Post #2





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 30.07.2006
Skąd: Łódź

Ostrzeżenie: (0%)
-----


A spróbuj przy nawiązywaniu połączenia wpisać łącznie z nazwą instancji czyli

  1. 'servername\inistancename'


Go to the top of the page
+Quote Post
mmmmmmm
post
Post #3





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
--Venus--
post
Post #4





Goście







"jakis tam select" to np. select columna from tabela i zapytanie chodzi bo wlepiłem je do Management Studio
Go to the top of the page
+Quote Post
busterek
post
Post #5





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 30.07.2006
Skąd: Łódź

Ostrzeżenie: (0%)
-----


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);


Ten post edytował busterek 3.01.2014, 10:15:01
Go to the top of the page
+Quote Post
busterek
post
Post #6





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 30.07.2006
Skąd: Łódź

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
bostaf
post
Post #7





Grupa: Zarejestrowani
Postów: 374
Pomógł: 79
Dołączył: 6.04.2010
Skąd: Ostrów Wielkopolski

Ostrzeżenie: (0%)
-----


@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ć.
Go to the top of the page
+Quote Post
busterek
post
Post #8





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 30.07.2006
Skąd: Łódź

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
--Venus--
post
Post #9





Goście







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.


Go to the top of the page
+Quote Post
john_doe
post
Post #10





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
--Venus--
post
Post #11





Goście







Dzięki john_doe działa PDO jak należy!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 07:20