Php mysqli_free_result():类mysqli_result的对象无法转换为字符串
就我在谷歌和其他网站上的搜索而言,这似乎是一个相当普遍的问题,但我似乎无法解决它。另外,我认为我对函数的使用与其他人略有不同。 而且,在经历了大约3个小时的倒霉之后,我在这里发帖了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
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();
}
谢谢工作完美。。。再次证明,简单更好。呵呵,谢谢!工作完美。。。再次证明,简单更好。呵呵。