Mam następujący problem moja klasa {jesli mozna to tak nazwac} do obslugi mysql powoduje błąd który objawia się przejściem połączenia mysql poza obręb instancji klasy.
logicznie rzecz biorąc połączenie powinno być wykonywane od razu przez konstruktor obiektu
obsługa ewentualnych błędów w sposób jaki Ty próbujesz to robić (użycie wytłumienia @) jest raczej niedopuszczalna, a już na pewno nie elegancka
odnośnie samego problemu
nie wiem co zawierają u Ciebie zmienne dla poszczególnych połączeń, ale jeżeli są takie same to tutaj leży problem, ogólnie zmień mysql_pconnect na mysql_connect i sprawdź jak wtedy się będzie zachowywać skrypt
pytanie czy koniecznie potrzebujesz stałych połączeń pconnect, bo większość aplikacji raczej ich nie potrzebuje, a zastosowanie zwykłych połączeń connect mogło by uprościć sprawę
zasadniczo, jeśli mowa o php5 to w ogóle Twój kod prezentuje się kiepsko (sorry)
zobacz taką modyfikację na szybko:
<?php
class db
{
public function __construct( $host, $user, $pass, $base )
{
$this->link = mysql_connect($host, $user, $pass, TRUE) or die('Błąd połączenia'.mysql_error()));
mysql_select_db($base, $this->link) or die('Błąd wyboru bazy'.mysql_error()));
$this->base = $base;
}
public function query( $query )
{
$result = mysql_query($query,$this->link) or die('Błąd zapytania',mysql_error());
return $result;
}
function assoc($result)
{
return mysql_fetch_assoc($result);
}
}
?>
chociaż i takie rozwiązanie jest nie eleganckie bo zamiast or die() najlepiej było by zastosować wyjątki. Ale możesz wyciągnąć może kilka wniosków EDIT: a potem
$a = new db($host, $user, $pass, $base );
$b = new db($host, $user, $pass, $base );
$a->query();