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
如何解决这个问题
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
如何解决这个问题
解决方案 »
- gbk_chinese_ci转utf8_general_ci
- 大家想想 echo (int)( ( 0.1 + 0.7 ) * 10 )是多少?
- 比如下面代码,变量a是 true,输出显示是1,为什么不是 true 呢? 变量b是false,输出为何是空白呢?即什么输出也没有,这与javascript有很
- 定義class時this 是什麼意思?
- PHP关于ajax中在Html页面方法传值问题
- 50分求教银行接口 MD5 加密解密问题~
- Session 超简单的问题?
- 谁帮我写一个正则表达式?
- PHP调用JAVA的问题 (解决后再加100分)
- PHP求数组长度的函数是什么?
- 重装mysql,最有一步"Applay security"报错,求解!
- 关于变量警告的问题。
if($this->result){
mysql_free_result($this->result);
} else{
echo '没有结果集了';
}
但它还是显示
mysql_free_result():supplied argument is not a valid mysql result resource
{
mysql_free_result($this->result);
$this->result = NULL;
}
var_dump($this->result);// 打印下类型 是不是还是结果集
$this->_free_result();
mysql_close($this->conn);
}
mysql_free_result() 仅需要在考虑到返回很大的结果集时会占用多少内存时调用。在脚本结束后所有关联的内存都会被自动释放。
public function _close_conn(){
var_dump($this->result);// 打印下类型 是不是还是结果集
$this->_free_result();
mysql_close($this->conn);
}你先打印一下
LZ我以前写查询跟你不一样
我都是 while($row = mysql_fetch_array($this->result,MYSQL_ASSOC)){}
我不知道你的为啥会出警告。
因为
mysql_fetch_array 是一行一行的吧结果集的数据放在数组里然后赋值$row
当遇到最后一行之后 $row就是空了 while就会停止。不知道你写的!! 是什么原因。
$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);
我觉得你还是没有必要 mysql_free_result($this->result);
除非你是很大很大的结果集。
反正我在项目中木有用的。