PHP: <?php class db{ public $host; public $user; public $passw; public $db; public $query; protected $link; protected $res; public $num; public $ar; public function init($HOST,$USER,$PASSW,$DB) { self::set_host($HOST); self::set_user($USER); self::set_passw($PASSW); self::set_db($DB); $this->query=NULL; $this->ar=array(); $this->link=@mysql_connect($this->host,$this->user, $this->passw)or die(ERR1); @mysql_select_db($this->db,$this->link) or die(ERR2); } public function query($q){ $this->query=@mysql_query($q,$this->link)or die(ERR3.mysql_error()); } public function num_rows(){ $this->num=mysql_num_rows($this->query); return $this->num; } public function fetch_row(){ $this->res=mysql_fetch_row($this->query); } public function fetch_array(){ $this->res=mysql_fetch_array($this->query); return $this->res; } } $obj1=new db(); $obj=new db(); $obj->init(HOST,USER,PASSW,DB_BEZLIM_NEW); $obj1->init(HOST,USER,PASSW,DB); $q="SELECT `framed_ip` FROM users"; $obj1->query($q); $numstart=NUMSTART; $n=$numstart; $n1=$n++; echo "num rows".$obj1->num_rows()."\n"; echo "OBJ1:".$obj1->host." ".$obj1->user." ".$obj1->passw." ".$obj1->db."\n"; echo "OBJ:".$obj->host." ".$obj->user." ".$obj->passw." ".$obj->db." \n"; for ($i=0; $i<$obj1->num_rows();$i++) { $row=$obj1->fetch_array(); $ip=$row['framed_ip']; for ($q=0; $q<24;$q++) { $q="INSERT INTO `def` VALUES ('".$ip."', 0, '".$n."','".$n1."', 0, 'Kbit/s', 0, 'Kbit/s', '".$q."', 'y');"; $obj->query($q); } $n++; $n1=$n++; } ?> Вывод: BJ1: freenibs OBJ: bezlimit2 can't do queryTable 'freenibs.def' doesn't exist Как показала практика mysql использует базу не ту что указал при mysql_select_db(DB,$LINK) Отсюда Я не могу два запроса выполнить - как это поменять? [sql]mysql> use freenibs; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> SHOW TABLES; +--------------------+ | Tables_in_freenibs | +--------------------+ | actions | | blacklist | | holidays | | packets | | prices | | users | +--------------------+ 6 rows in set (0.00 sec) mysql> use bezlimit2; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> SHOW TABLES; +---------------------+ | Tables_in_bezlimit2 | +---------------------+ | day | | def | +---------------------+ 2 rows in set (0.00 sec)[/sql]
пофиксил... ЗЫ: Я так думаю что неправильно пользуюсь mysql_select_db в функции init() класа... То есть по идеи должно быть 2-а обьекта с разными подключениями, а на кпрактике от этого кода получается как бы 2-е копии одинаковых...
Код (Text): # self::set_host($HOST); # self::set_user($USER); # self::set_passw($PASSW); # self::set_db($DB); где потерялась реализация этих методов?
PHP: <?php public function set_host($host){$this->host=$host;} public function set_user($user){$this->user=$user;} public function set_passw($passw){$this->passw=$passw;} public function set_db($db){$this->db=$db;} ?>