返回预准备语句结果时出错

时间:2012-12-12 20:38:53

标签: php mysqli prepared-statement

我有以下功能:

class Forums {
        public function getForum($id) {
            $database = new Database();
            $mysqli = $database->databaseConnection();
            $stmt = $mysqli->prepare("SELECT name, description FROM forums WHERE id = ?");
            $stmt->bind_param("i", $id);
            $stmt->execute();
            return $stmt;
        }
}

我这样调用它:

$forums = new Forums();
$result = $forums->getForum($_GET["id"]);
$result->bind_result($name, $description);
$result->fetch();

然后,由于它只返回一行,因此只要我需要就调用$name$description

但是,我的浏览器(Chrome)出现以下错误:

  

错误324(net :: ERR_EMPTY_RESPONSE):服务器关闭连接而不发送任何数据。"

如果我删除该函数并连接到数据库并直接在使用结果的文件中创建预准备语句,则不会发生这种情况。

为什么会这样?

1 个答案:

答案 0 :(得分:2)

看起来像variable scope问题。保存$mysqli的对象在getForum()方法执行后直接销毁。所以此时开放的DB连接也被破坏了。但是$result->fetch();需要连接仍然是开放的。