Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Serwis - sklep internetowy nie chce działąć na serwerze lokalnym, mysql_query() expects parameter 2 to be resource, null given in
andkazm
post
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 4.03.2013

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


Witam ,
NA komputerze z os xp 1.5 GB RAm, wgrałem wampa aby dla celów testowych uruchamiać lokalnie serwis www .
I to pojawiły sie problemy :
1. htaccess przystosowany do ssl - usunąłem te pliki i komunikt o błedach kompesji nieobsługiwanej
przez przeglądarkę przestał się pojawiać
2. teraz jednak mam problem :
Warning: mysql_query() expects parameter 2 to be resource, null given in....
i dalej podana jest treść zapytania które nie może zostać wykonane
( i tym samym dynamiczne skonfigurowanie strony nie udaje sie)
0 -
select configuration_key as cfgKey, configuration_value as cfgValue from configuration

Serwis oparty jest na silniku oscommerce , na serwerze produkcyjnym działa ok
Jak można poradzic sobie z tym problemem ?

Andrzej
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A jaki to ma związek z przeglądarka? No żaden. Przenosze.

Co do błędu nr dwa to masz błąd bazy. Postawiłeś w ogóle bazę?
Go to the top of the page
+Quote Post
andkazm
post
Post #3





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 4.03.2013

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


Baza jest skoro cytuję komunikat , który dostaję od mysql


A poza tym masz rację co do zmiany miejsca w którym powinien znaleźć się post , jednak skoro masz taką moc sprawczą to może by wątek przenieść do "bazy danych - mysql"
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Baza jest skoro cytuję komunikat , który dostaję od mysql
No właśnie nie.... jeśli nie masz bazy zainstalowanej, to właśnie pojawi się taki komunikat. Instalowałeś bazę tego sklepu czy nie? Instalowałeś w ogóle silnik mysql u siebie na kompie? Dwa proste pytania na które możliwa jest tylko jedna prosta odpowiedź: tak lub nie
Go to the top of the page
+Quote Post
andkazm
post
Post #5





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 4.03.2013

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


TAK
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Na obydwa pytania odpowiedź TAK?

To znajdź teraz kod, w którym łączysz się z bazą: coś ala mysql_connect oraz mysql_selectdb(). I za tym kodem daj:

die('BLAD:'.mysql_error());
Go to the top of the page
+Quote Post
andkazm
post
Post #7





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 4.03.2013

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


Bazę założyłem z backupu . Z tym też był niemały problem , bo najpierw chciałem zrobić restore z aktualnego backupu . W php ini zmieniałem ustawienia dot. wielkości obsługiwanego pliku :
post_max_size = 60M ,
max_input_time: -1 ,
max_execution_time = 0 nie mniej ciągle miałem komunikat , że limit czasu się skończył .
W końcu rozpakowałem mały plik sql ze strukturą wyjściową .
Z bazą się łączę , to działa . Problem jest właśnie j / w .
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A skad wiesz że łączysz się z bazą? Bo widać ewidentnie że twoj skrypt, ma z tym problem. Zastosuj się więc proszę do mojej prośby i zrób ten prosty banalny test. Już pokazałeś, że słabo się orientujesz twierdząc, że ten komunikat
"Warning: mysql_query() expects parameter 2 to be resource, null given in...."
jest komunikatem bazy,
wiec proszę nie wyciągaj innych pochopnych wniosków....

Błąd jaki masz moze wynikać z dwóch rzeczy:
1) Problem połączenia z bazą - to pokaze test o który poraz kolejny proszę.
2) Problem z przekazywanie zmiennej z połączeniem

Narazie skupmy się na pierwszym. Rozumiesz?

edit: a zresztą można od razu zając sie drugim:
w linii co leci komunikat jest taki kod:
mysql_query('zapytanie', $zmienna);
zamien go na :
mysql_query('zapytanie');
bo z komunikatu wynika, że $zmienna jest null. Może chodziaż chwyci aktualne połączenie jeśli jest
Go to the top of the page
+Quote Post
andkazm
post
Post #9





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 4.03.2013

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


Masz rację o tyle , że sama treść zapytania które nie wyszło , zwrócona przez serwer w komunikacie o
błędzie o niczym nie świadczy i to było z mojej strony głupie . Nie mniej opieram się na skrypcie , który na początku testuje czy jest połączenie z bazą więc tutaj nie ma wątpliwości .

ALe jednak wykonałem test - zmieniłem w pliku configure.php hasło do bazy danych i
mam zaraz komunikat :

Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'andrzej'@'localhost' (using password: YES) in C:\wamp\www\projektcik1\includes\functions\database.php on line 17

wracam do hasła właściwego ustalonego poprzez phpadmina i komunikatu nie ma jest ten jak do tej pory
Warning: mysql_query() expects parameter 2 to be resource, null given in C:\wamp\www\projekcik1\includes\functions\database.php on line 42
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No i super (IMG:style_emoticons/default/smile.gif)
Czyli teraz przechodzimy do punktu nr2: spójrz na mój edit z poprzedniego posta (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
andkazm
post
Post #11





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 4.03.2013

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


ok , wykonam ten Twój test także , moment

sprawa się komplikuje , zapytanie obsługuje następująca funkcja :
  1. function tep_db_query($query, $link = 'db_link') {
  2. global $$link, $debug;
  3. $query_start = microtime();
  4.  
  5. if (defined('STORE_DB_TRANSACTIONS') && (STORE_DB_TRANSACTIONS == 'true')) {
  6. error_log('QUERY ' . $query . "\n", 3, STORE_PAGE_PARSE_TIME_LOG);
  7. }
  8.  
  9. $result = mysql_query($query, $$link) or tep_db_error($query, mysql_errno(), mysql_error());
  10.  
  11. if (defined('STORE_DB_TRANSACTIONS') && (STORE_DB_TRANSACTIONS == 'true')) {
  12. $result_error = mysql_error();
  13. error_log('RESULT ' . $result . ' ' . $result_error . "\n", 3, STORE_PAGE_PARSE_TIME_LOG);
  14. }
  15.  
  16. $_start = explode(' ', $query_start);
  17. $_end = explode(' ', microtime());
  18. $_time = number_format(($_end[1] + $_end[0] - ($_start[1] + $_start[0])), 6);
  19.  
  20. $debug['QUERIES'][] = $query;
  21. $debug['TIME'][] = $_time;
  22. $debug['QUERY_TIME'] += $_time;
  23. return $result;
  24. }
  25.  
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




nie: $result = mysql_query($query, $$link) or tep_db_error($query, mysql_errno(), mysql_error());
a: $result = mysql_query($query) or tep_db_error($query, mysql_errno(), mysql_error());
Tak nie działa? Aż tyle połączeń robi twój serwis że musisz podawać konkretnie o które chodzi?

edit: zas głównym problemem może byc to, że przy mysql_connect nie podajesz włąsciwej zmiennej.
Pokaz jeszcze kod z mysql_connect()
Go to the top of the page
+Quote Post
andkazm
post
Post #13





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 4.03.2013

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


ten fragment kodu wygląda tak :
  1. // include the database functions
  2. require(DIR_WS_FUNCTIONS . 'database.php');
  3.  
  4. // make a connection to the database... now
  5. tep_db_connect() or die('Nie mozna polaczyc sie z baza danych!');
  6.  
  7. // set the application parameters
  8. $configuration_query = tep_db_query('select configuration_key as cfgKey, configuration_value as cfgValue from ' . TABLE_CONFIGURATION);
  9. while ($configuration = tep_db_fetch_array($configuration_query)) {
  10. define($configuration['cfgKey'], $configuration['cfgValue']);
  11. }

i nie wykonuje się to po // set the application parameters
Go to the top of the page
+Quote Post
nospor
post
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Po pierwsze: poprawiłeś kod jak prosiłem? Wywaliłes z mysql_query te $$link??

Po drugie: prosiłem o kod z mysql_connect, czyli zapewne o tresc funkcji tep_db_connect() a nie jej wywołanie.
Go to the top of the page
+Quote Post
andkazm
post
Post #15





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 4.03.2013

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


dodam jeszcze :
- to wszysto działa bezbłędnie na serwerze produkcyjnym ( usunąłem tylko pliki .htaccess o czym pisałem na początku )

- kiedyś tą stronke uruchamiałem lokalnie na laptopie ( lepsze parametry sprzętu ) z vistą i działało wsio
więc teraz nie rozumiem czy system operacyjny ma znaczenie tutaj ?

wedle życzenia :
  1.  
  2. function tep_db_connect($server = DB_SERVER, $username = DB_SERVER_USERNAME, $password = DB_SERVER_PASSWORD, $database = DB_DATABASE, $link = 'db_link') {
  3. if (USE_PCONNECT == 'true') {
  4. $$link = mysql_pconnect($server, $username, $password);
  5. } else {
  6. $$link = mysql_connect($server, $username, $password);
  7. }
  8.  
  9. if ($$link) mysql_select_db($database);
  10. ## tep_db_query("SET NAMES latin2");
  11. return $$link;
  12. }
  13.  
  14. function tep_db_close($link = 'db_link') {
  15. global $$link;
  16.  
  17. return mysql_close($$link);
  18. }
  19.  
Go to the top of the page
+Quote Post
nospor
post
Post #16





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Zrob zmiane co ci pisalem:
nie: $result = mysql_query($query, $$link) or tep_db_error($query, mysql_errno(), mysql_error());
a: $result = mysql_query($query) or tep_db_error($query, mysql_errno(), mysql_error());

a ci zadziała. A jak nie chcesz tego zmieniać to niech ktoś inny się zastanawia czemu te globale nie działają.

ewentulanie do funkcji dopisz global $$link
function tep_db_connect($server = DB_SERVER, $username = DB_SERVER_USERNAME, $password = DB_SERVER_PASSWORD, $database = DB_DATABASE, $link = 'db_link') {
global $$link;
//a tu dalej jak było
Go to the top of the page
+Quote Post
andkazm
post
Post #17





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 4.03.2013

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


w postaci
  1. mysql_query($query)
idzie cała lista błędów
Warning: mysql_real_escape_string() expects parameter 2 to be resource, null given in C:\wamp\www\projekcik1includes\functions\database.php on line 137
idalej

Deprecated: Function eregi() is deprecated in C:\wamp\www\projekcik1\includes\classes\language.php on line 87

Myślę że muszę to całe środowisko spowrtem zbudować na lapku . Troszke to już za dużo czasu mi zajmuje a w gruncie rzeczy chodzi tylko
o możliwośc sprawdzania jak działa np. slaider , jakiś banner przed wgraniem "na dobre" , bez ingerowania w wygląd strony w wersji produkcyjnej
Go to the top of the page
+Quote Post
nospor
post
Post #18





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




widzisz, po wywaleniu tego co ci kazałem, zaczęło ci działać. Niestety w innych cześciach systemu masz ten sam myk, np przy funkcji mysql_real_escape_string() . Jakbyś tam też wywalił te $$link to i tu błędy by zniknęły.

zas eregi nie ma związku z bazą. php informuje cie, że jest to przestarzała funkcja.
Go to the top of the page
+Quote Post
andkazm
post
Post #19





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 4.03.2013

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


ale tak troche podsumowując . skąd te różnice w działaniu strony w środowisku tetowym i produkcyjnym , konkretnie
na serwerze "w świecie" to działa bez zarzutu więc zaskoczyło mnie że to co miało zająć niwiele czasu absorbuje mnie już od kilko dni
Go to the top of the page
+Quote Post
nospor
post
Post #20





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A dopisałeś te global jak cię prosiłem? Z jakiegos powodu zmienna $$link nie jest widoczna poza funkcją. Jednym z powodów teoretycznie jest brak globala
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 15.09.2025 - 23:24