Heim > Backend-Entwicklung > PHP-Tutorial > 关于释放数据库结果集的有关问题

关于释放数据库结果集的有关问题

WBOY
Freigeben: 2016-06-13 10:17:31
Original
1935 Leute haben es durchsucht

关于释放数据库结果集的问题。
class DB{
private $host; //服务区地址
private $user; //登录账号
private $pass; //登录密码
private $name; //数据库名称
private $font; //数据库字符集
private $conn; //数据库连接源
private $result; //结果集
private $rowRst; //查询单条记录
private $rowArray=array(); //查询多条记录
private $rowAff; //增改删的记录条数

public function __construct($host,$user,$pass,$name,$font){
$this->host=$host;
$this->user=$user;
$this->pass=$pass;
$this->name=$name;
$this->font=$font;
$this->init_conn();
}

//连接数据库
private function init_conn(){
if(!$this->conn=mysql_connect($this->host,$this->user,$this->pass)){
exit('数据库连接错误');
}
if(!mysql_select_db($this->name,$this->conn)){
exit('数据库选择错误');
}
if(!mysql_query('SET NAMES '.$this->font)){
exit('字符集错误');
}
}

//执行sql语句
public function _query($sql){
if(!$this->result=mysql_query($sql,$this->conn)){
exit('sql执行失败');
}
return $this->result;
}

//查询单挑数据
public function _fetch_array($sql){
$this->_query($sql);
$this->rowRst=mysql_fetch_array($this->result,MYSQL_ASSOC);
return $this->rowRst;
}

//查询多条数据
public function _fetch_array_list($sql){
$this->_query($sql);
while (!!$rows=mysql_fetch_array($this->result,MYSQL_ASSOC)){
$this->rowArray[]=$rows;
}
return $this->rowArray;
}

//增改删的影响记录条数
public function _affected_rows(){
$this->rowAff=mysql_affected_rows();
return $this->rowAff;
}

//取得上一步INSERT操作的ID号
public function _insert_id(){
return mysql_insert_id();
}

//释放结果集
public function _free_result(){
$this->rowAff='';
$this->rowArray='';
$this->rowRst='';
mysql_free_result($this->result);
}

//关闭数据库
public function _close_conn(){
$this->_free_result();
mysql_close($this->conn);
}
}
当我用_close_conn这个方法是,网页面显示mysql_free_result():supplied argument is not a valid mysql result resource
如何解决这个问题


------解决方案--------------------
在mysql_free_result($this->result); 之前你先看一下 $this->result 变成什么了。是不是你原先打开的资源
------解决方案--------------------
if(is_resource($this->result))
{
mysql_free_result($this->result);
$this->result = NULL;
}
------解决方案--------------------
你的 $this->result 是这样赋值的
$this->result=mysql_query($sql,$this->conn)

mysql_query 只在执行 select 语句时返回的是资源,其他的都是逻辑值

所以 mysql_free_result($this->result);
要写作
if(is_resource($this->result)) mysql_free_result($this->result);

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage