关闭产生它的mysqli_result
连接后,您仍然可以使用mysqli
对象吗?例如,我正在创建一个PHP对象,其方法是打开mysqli连接,执行查询,将结果存储到参数中,然后关闭连接。这会起作用还是我应该将结果fetch_all()
放入一个数组然后关闭连接?
我无法在文档或其他网站上找到回答这个问题的内容。也许那是因为它对其他人来说都是显而易见的,但对我来说并非如此。
答案 0 :(得分:1)
是。默认情况下,mysqli使用选项MYSQLI_STORE_RESULT
运行查询,这意味着它将结果集复制到客户端(进入PHP驱动程序的内存)。因此当你" fetch"从mysqli结果来看,您实际上只是循环遍历已经从MySQL服务器完全获取的结果集。如果您关闭连接,驱动程序会保留该数据。
以下是一个快速代码示例:
$con = new mysqli(...);
sleep(10);
/* go run SHOW PROCESSLIST in a MySQL shell to see the connection */
$sql = "SELECT SLEEP(10) FROM test.foo ";
$result = $con->query($sql);
/* observe the query running in SHOW PROCESSLIST */
$con->close();
sleep(10);
/* now go look at SHOW PROCESSLIST to verify the connection is gone */
print_r($result->fetch_all());
/* Hey! I got the data anyway */