Skocz do zawartości

Dwa połączenia do bazy


Kear

Rekomendowane odpowiedzi

Napotkałem pewien problem :

<?php

$polaczenie1=mysql_connect($crf_c['serwer'],$crf_c['login'],$crf_c['haslo']);

[...]

mysql_query("SELECT COUNT(id) FROM `costam` WHERE kat='".$kid."';"); // Praca z $polaczenie1

[...]

$polaczenie2=mysql_connect($crf_d['serwer'],$crf_d['login'],$crf_d['haslo']);

mysql_query("SELECT COUNT(id) FROM `cos` WHERE kat='".$kid."';", $polaczenie2); // Praca z $polaczenie2

mysql_close($polaczenie2);

[...]

mysql_query("SELECT COUNT(id) FROM `costam` WHERE kat='".$kid."';"); // Praca z $polaczenie1 <<< juz nie dziala :)

mysql_close($polaczenie1);

?>

Pytanie: co zrobić, żeby zapytanie do bazy na końcu nie zwracało błędu? W zapytania z połączenia pierwszego nie mogę ingerować, tzn. nie mogę dodać na końcu mysql_query ID połączenia.

z połączenia 1 na końcu skryptu dostaję:

Warning: mysql_query() [function.mysql-query]: Access denied for user 'nobody'@'localhost' (using password: NO)
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established
Warning: mysql_result(): supplied argument is not a valid MySQL result resource

Odnośnik do komentarza
Udostępnij na innych stronach

Jak podasz podczas wykonywania SQL-a z jakiego połaczenia ma korzystać mysql_query to Ci zadziała.

Dobrą praktyką jest zawsze podawanie z jakiego połaczenia sie korzysta.

Wtedy jest o jakies kilka dni oszczedności na szukanie błedów.

Ogólnie to funkcję obsługi baz danych (w PHP) mają sporo automatów które pomagają jak sie umie z nich korzystać.

Ale za to bardzo przeszkadzają jak sie nie rozumie jak to działa i co sie dzieje jak sie wywołuje funkcje np. mysql_query.

Ty rozłaczyłeś sie z bazą danych a potem próbujesz wykonać mysql_query które próbuje sie połączyć z baza z domyślnymi parametrami z php.ini (ewentualnie z domyslnymi wkompilowanymi w PHP)

Do doczytania:

https://pl.php.net/manual/pl/function.mysql-query.php

Opis

resource mysql_query ( string $zapytanie [, resource $identyfikator_połączenia [, int $typ_wyniku]] )

mysql_query() wysyła zapytanie do aktywnej bazy na serwerze skojarzonym z podanym identyfikatorem połączenia. Jeżeli identyfikator_połączenia nie został podany, wykorzystywane jest ostatnio otwarte połączenie. Jeżeli żadne połączenie nie jest otwarte, podjęta zostanie próba ustanowienia go, poprzez wywołanie mysql_connect() bez argumentów.

Odnośnik do komentarza
Udostępnij na innych stronach

Jak napisałem na końcu mojego pierwszego posta, nie mogę ingerować w drugą funkcję mysql_query. Może źle zapytałem, bardziej chodzi mi o to, czy jest jakiś sposób, żeby $polaczenie1 było domyślnym połączeniem po tym jak $polaczenie2 zostanie zamknięte.

Możnaby pokombinować w stylu:

[...]

mysql_close($polaczenie2);

$polaczenie2=$polaczenie1;

[...]

Problem w tym, że nie znam nazwy zmiennej dla połączenia 1, nie mam do tego wglądu.

Odnośnik do komentarza
Udostępnij na innych stronach

Po pierwsze: jak to nie masz wglądu ? Zaszyfrowane czy jak ? Jak zaszyfrowane to poproś autora o poprawkę ewentualnie na własne potrzeby odszyfruj.

A to nie możesz jeszcze raz sie polaczyć ?

mysql_close($polaczenie2);

$polaczenie1=mysql_connect($crf_c['serwer'],$crf_c['login'],$crf_c['haslo']);

Odnośnik do komentarza
Udostępnij na innych stronach

Wglądu nie mam teoretycznie.

To są oczywiście moje skrypty, tylko nie chce mi się tego zmieniać w paruset plikach ;) mogę za to includować skrypt który wykonuje drugie połączenie, jeżeli nie da się tego zrobić o co pytam to mam nauczkę ;) pozostaje mi zmiana w każdym skrypcie.

Dzięki za zainteresowanie tematem ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności