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
如何解决这个问题
解决方案 »
- 请教各位高手连接数据库的问题
- 求高手为我解惑,关于面向对象~~
- SQL语句(mysql)怎么去掉字段内一部分内容
- 我有几个积压很久的问题,我想问问怎么做,最好给个代码。。
- $_POST['act'],$_POST["act"],居然也报错,郁闷了
- 字符串替换问题,将 字符 " 替换为 \" 怎么写呢?
- 切取中文和数字混合字符串中的数字
- 高人指点:我得页面总是提示“Parse error: syntax error, unexpected T_STRING in D:\www\trunk\hello.php on line 2”
- 探讨一下函数的变量付值调用哪个比较好
- 如何随机的在my-sql表中取记录?
- 重装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);
除非你是很大很大的结果集。
反正我在项目中木有用的。