extenduju pomenutu...
Code:
class MySQLDB {
private $connection;
function __construct() {
$this->dbConnect();
}
private function dbConnect() {
$this->connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS) or die(mysql_error());
mysql_select_db(DB_NAME, $this->connection) or die(mysql_error());
}
private function dbClose() {
mysql_close($this->connection);
}
protected function query($query) {
//$this->dbConnect();
return mysql_query($query, $this->connection);
//$this->dbClose();
}
};
$db = new MySQLDB;
class Getaccs extends MySQLDB {
function __construct() {
}
function getAccs() {
$q = "SELECT id FROM tbl";
$result = $this->query($q);
//ostatak koda ovde
}
};
$getaccs = new Getaccs;
class MySQLDB {
private $connection;
function __construct() {
$this->dbConnect();
}
private function dbConnect() {
$this->connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS) or die(mysql_error());
mysql_select_db(DB_NAME, $this->connection) or die(mysql_error());
}
private function dbClose() {
mysql_close($this->connection);
}
protected function query($query) {
//$this->dbConnect();
return mysql_query($query, $this->connection);
//$this->dbClose();
}
};
$db = new MySQLDB;
class Getaccs extends MySQLDB {
function __construct() {
}
function getAccs() {
$q = "SELECT id FROM tbl";
$result = $this->query($q);
//ostatak koda ovde
}
};
$getaccs = new Getaccs;
Ovo je uproscena varijanta ali ce posluziti za konkretno pitanje.
Problem je u link identifier-u "$this->connection". Naime, kada god
izvrsim upit ka bazi na pomenuti nacin, dobijam error:
"supplied argument is not a valid MySQL-Link resource".
Ako u f-ju query() ukljucim i komentovane linije onda je sve u redu...
Zanima me gde je nestao link identifier ako je konekcije vec uspostavljena
i ako je $this->connection setovan? Mislio sam da ce ostati setovan sve dok
se ne izvrse sve skripte koje extenduju MySQLDB... U suprotnom bi znacilo da
moram za svaku skriptu da otvaram konekciju ponovo...
Znam da ce se vratiti ista konekcija ako su vrednosti DB_SERVER, DB_USER i DB_PASS
iste pa sam bio ubedjen da je to jedna konekcija i ostaje otvorena dok je ja
ne zatvorim sa $this->dbClose()...
Sve u svemu jel ima logike da u f-ji query() uvek otvaram i zatvaram conn?
Takodje hocu da ubacim i neku proveru za podatke koji ce biti upisani/selektovani
u/iz baze...
Code:
protected function safe($item) {
//$this->dbConnect();
$item = mysql_real_escape_string($item, $this->connection);
//$this->dbClose();
return $item;
}
protected function safe($item) {
//$this->dbConnect();
$item = mysql_real_escape_string($item, $this->connection);
//$this->dbClose();
return $item;
}
Onda bi i ovde morao da otvaram i zatvaram conn svaki put kada proveravam...
Jel to mnogo opterecuje server?
A opet mogu i da jednostavno obrisem $this->connection kao argument pa ce sve raditi.
Jel ima neke razlike u tom slucaju? Ocu da skapiram ovo kako bih bio siguran da skripta
efikasno radi ono sto treba da radi :)
Pozz