我在一个界面里面进行了两次mysql数据库操作.
1.界面布局分成左右两块,进入界面的时候显示左侧内容,进行一次数据库操作。
2.点击左侧的submit,右侧内容显示,有进行一次数据库操作。
我有一个数据库类,在左边new一次,在右侧new一次。
进入页面就会出现Warning: mysql_close(): 7 is not a valid MySQL-Link resource in E:\www\bk_hmsystem\backstage\db.php on line 22
如果我删除左侧的数据库操作就不会出现这个问题。
mysql_close放在数据库操作类的析构函数中,如下:
class db
{
private $host;
private $user;
private $pw;
private $con;
private $dbname;
function __construct($host,$user,$pw,$dbname)
{
$this->host=$host;
$this->user=$user;
$this->pw=$pw;
$this->dbname=$dbname;
$this->connect();
}
function connect()
{
$this->con=mysql_connect($this->host,$this->user,$this->pw);
if(!$this->con) die(mysql_error());
mysql_select_db($this->dbname,$this->con) or die(mysql_error());
}
function __destruct()
{
mysql_close($this->con);
}
function query($name,$table,$cond)
{
if(($name=="")&&($cond==""))
$sql="select * from $table";
else
{
if($name=="")
$sql="select * from $table where $cond";
else
{
if($cond=="")
$sql="select $name from $table";
else
$sql="select $name from $table where $cond";
}
}
$result=mysql_query($sql,$this->con);
if(!$result)
{
die (mysql_error());
}
else
return $result;
}
}
红色的地方有错.不明白为什么?
------解决方案--------------------
显然调用了两次。第一次已经关闭连接。第二次就会出错。你干脆就省去那一步把。脚本结束后自然会断开连接的。
------解决方案--------------------
你的页面是两个框架页构成的吗?
加些代码分析一下
function __destruct()
{
if(is_resource($this->con))
mysql_close($this->con);
else {
echo $_SERVER['PHP_SELF'];
var_dump($this->con);
}
}