简单封装了一个MySql的类
class MySql{
private $dbCon;
public function __construct(){
$this->dbCon=mysql_connect(...);
mysql_select_db("test",$this->dbCon);
}
public function query($query){
return mysql_query($query,$this->dbCon);
}
public function closeDb(){
mysql_close($this->dbCon);
}
}
另外在两个类里面实例化该MySql连接并且定义方法获取数据。
class UserDao{
private $mysql;
public function __construct(){
$this->mysql=new MySql();
}
public function getUsers(){
$query="SELECT * FROM USERS";
$rs=$this->mysql->query($query);
#format data
return $result;
}
public function __destruct(){
$this->mysql->closeDb();
}
}
class NoteDao{
private $mysql;
public function __construct(){
$this->mysql=new MySql();
}
public function getNotes(){
$query="SELECT * FROM Notes";
$rs=$this->mysql->query($query);
#format data
return $result;
}
public function __destruct(){
$this->mysql->closeDb();
}
}
然后新建一个test.php页面
如果单独引用任何一个UserDao或者NoteDao都没有问题。但是如果同时引用UserDao和NoteDao来获取数据,则会有PHP Warning: mysql_close(): 9 is not a valid MySQL-Link resource in 。。。
这样的错误。
为什么呢?
mysql_connect是会复用连接的。所以你new出来的两个 MySql 是用的同一个连接(可以var_dump出来看,resource id是同一个)。
mysql_connect第四个参数是是否新建连接,默认FALSE,置成 TRUE 就行了。
$this->dbCon = mysql_connect($host, $user, $passwd, TRUE);
但是我不太建议这么做,本来连接是可以复用的~~~没必要新建。用mysql_connect创建的连接php是会自动释放的,不用调用mysql_colse去关。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。