[ sekvoja @ 25.02.2010. 17:09 ] @
Imam malu klasu za povezivanje na mysql bazu i vise drugih klasa koje 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; 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; } 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 |