Php mysqli_free_result():类mysqli_result的对象无法转换为字符串

Php mysqli_free_result():类mysqli_result的对象无法转换为字符串,php,mysql,mysqli,Php,Mysql,Mysqli,就我在谷歌和其他网站上的搜索而言,这似乎是一个相当普遍的问题,但我似乎无法解决它。另外,我认为我对函数的使用与其他人略有不同。 而且,在经历了大约3个小时的倒霉之后,我在这里发帖了 function free_result(){ # LINE 48 $free = "SELECT SHOW DESCRIBE EXPLAIN"; # LINE 49 $free = e

就我在谷歌和其他网站上的搜索而言,这似乎是一个相当普遍的问题,但我似乎无法解决它。另外,我认为我对函数的使用与其他人略有不同。 而且,在经历了大约3个小时的倒霉之后,我在这里发帖了

function free_result(){                                        # LINE 48
    $free = "SELECT SHOW DESCRIBE EXPLAIN";                    # LINE 49
    $free = explode(" ", $free);                               # LINE 50
    $sql = $this->sql;                                         # LINE 51
    while(list($key, $value) = each($free)){                   # LINE 52
        if(preg_match("/\b".$value."\b/", $sql)){              # LINE 53
            $result = $this->result;                           # LINE 54
            if(!mysqli_free_result($result)){                  # LINE 55
                $this->errors("Invalid result: <b>{$result}</b>. Couldn't free result."); # LINE 56
            }                                                  # LINE 57
        }                                                      # LINE 58
    }                                                          # LINE 59
}                                                              # LINE 60
                                                               # LINE 61
function query($sql){                                          # LINE 62
    $this->query_id = mysqli_query($this->connection, $sql);   # LINE 63
    $this->result = mysqli_store_result($this->connection);    # LINE 64
    $this->sql = $sql;                                         # LINE 65
    if(!$this->query_id){                                      # LINE 66
        $this->errors("Couldn't query: <b>{$sql}</b>");        # LINE 67
        return 0;                                              # LINE 68
    }                                                          # LINE 69
    $this->affected = mysqli_affected_rows($this->connection); # LINE 70
                                                               # LINE 71
    return $this->query_id;                                    # LINE 72
}                                                              # LINE 73
就我对这一点的理解而言,我认为问题在于$result变量(第54行,第64行),但因为这是我第一次使用MySQLi,所以我不太确定

我希望你能理解这个问题,并能提供帮助!
提前谢谢

该代码看起来是正确的,只是当没有结果集(例如,对于插入)或错误时,store_result可能返回FALSE。如果为非零,则应该返回一个结果集。看起来您正在使用$free数组检查这一点(但是field_计数应该更快更准确)。如果返回非空字符串,则表示有错误。

该代码看起来正确,但当没有结果集(例如,插入)或错误时,存储结果可能返回FALSE。如果为非零,则应该返回一个结果集。看起来您正在使用$free数组检查这一点(但是field_计数应该更快更准确)。如果返回非空字符串,则表示出现错误。

mysqli_store_result
在两种情况下返回布尔值:对于更新/插入/删除等查询,它返回true(例如,这些查询可能在字符串中包含SELECT/SHOW/descripe/EXPLAIN),或者SELECT/SHOW/descripe/EXPLAIN查询失败。检查
$this->sql
将显示哪个。如果你一心想释放这些结果,只需在之前做一个更简单的检查:

 function free_result(){ 
    if($this->result instanceof mysqli_result) $this->result->free();
 }

mysqli_store_result
在两种情况下返回布尔值:对于更新/插入/删除等查询,它返回true(例如,这些查询可能包含字符串中的SELECT/SHOW/descriple/EXPLAIN),或者SELECT/SHOW/descriple/EXPLAIN查询失败。检查
$this->sql
将显示哪个。如果你一心想释放这些结果,只需在之前做一个更简单的检查:

 function free_result(){ 
    if($this->result instanceof mysqli_result) $this->result->free();
 }

谢谢工作完美。。。再次证明,简单更好。呵呵,谢谢!工作完美。。。再次证明,简单更好。呵呵。