我想将 MySQLi 查询的结果存储为会话变量,以便我可以重用它而无需再次执行查询。我不想在网站的每个页面上或每次刷新页面时都执行相同的查询。
我已经尝试了下面的代码,但出现了诸如“对象无法存储在会话中”和“mysqli_fetch_array 期望参数一是资源”之类的错误。
如何将查询结果存储在会话中?
session_start();
if (!isset($_SESSION['query_result'])) {
$anything=mysqli_query($connection,"select something from table name
where filed1='$variable' order by id desc limit 70");
$_SESSION['query_result']=$anything;
} else {
$anything= $_SESSION['query_result'];
}
while ($data=mysqli_fetch_array($anything)) {
/* output the data */
}
如果您不仅想存储一个客户端的数据,还想存储服务器端的数据,我建议您看看如何在php中构建内存服务器端缓存? https://stackoverflow.com/questions/7758302/how-to-build-a-in-memory-server-side-cache-in-php。有些框架已经内置了这个功能。
否则使用 mysqli API 方法之一,例如http://php.net/manual/de/mysqli-result.fetch-assoc.php http://php.net/manual/de/mysqli-result.fetch-assoc.php,这应该返回一个数组而不是对象。
mysqli_query() 返回一个不能存储到会话中的对象(有一种将对象转换为数组的方法,但我不建议您存储整个对象)http://php.net/manual/de/function.get-object-vars.php http://php.net/manual/de/function.get-object-vars.php
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)