在会话中存储 mysqli_query 结果
store mysqli_query result in session
我想将 MySQLi 查询的结果存储为会话变量,这样我就可以重用它而无需再次执行查询。我不想在我网站的每个页面或每次刷新页面时都执行相同的查询。
我已经尝试了下面的代码,但出现了 "object can not be stored in session" 和 "mysqli_fetch_array expects parameter one to be a resource".
之类的错误
如何在会话中存储查询结果?
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 */
}
试试这个:
if(!isset($_SESSION['query_result'])){
$anything=mysqli_query($connection,"select something from table name where filed1='$variable' order by id DESC limit 70");
while($res = mysqli_fetch_row($anything)){
array_push($_SESSION['query_result'], $res);
}
} else {
$anything = $_SESSION['query_result'];
}
while($data=mysqli_fetch_array($anything)){
print_r($data);
}
如果您不仅要为一个客户端存储数据,还要为服务器端存储数据,我建议您查看 how to build a in-memory server side cache in php?。有些框架已经内置了这个。
否则使用 mysqli API 方法之一,如 http://php.net/manual/de/mysqli-result.fetch-assoc.php,这应该 return 你是一个数组而不是对象。
mysqli_query() returns 一个你不能存储到会话中的对象(有一种方法可以将对象转换为数组,但我不建议你存储整个对象) http://php.net/manual/de/function.get-object-vars.php
这样使用:
$result = $connection->query("select something from table");
$_SESSION['session-name'] = $result->fetch_assoc();
或
$sql = `select something from table`;
$result = mysqli_query($sql);
$_SESSION['session name'] = mysqli_fetch_assoc($result);
我想将 MySQLi 查询的结果存储为会话变量,这样我就可以重用它而无需再次执行查询。我不想在我网站的每个页面或每次刷新页面时都执行相同的查询。
我已经尝试了下面的代码,但出现了 "object can not be stored in session" 和 "mysqli_fetch_array expects parameter one to be a resource".
之类的错误如何在会话中存储查询结果?
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 */
}
试试这个:
if(!isset($_SESSION['query_result'])){
$anything=mysqli_query($connection,"select something from table name where filed1='$variable' order by id DESC limit 70");
while($res = mysqli_fetch_row($anything)){
array_push($_SESSION['query_result'], $res);
}
} else {
$anything = $_SESSION['query_result'];
}
while($data=mysqli_fetch_array($anything)){
print_r($data);
}
如果您不仅要为一个客户端存储数据,还要为服务器端存储数据,我建议您查看 how to build a in-memory server side cache in php?。有些框架已经内置了这个。
否则使用 mysqli API 方法之一,如 http://php.net/manual/de/mysqli-result.fetch-assoc.php,这应该 return 你是一个数组而不是对象。
mysqli_query() returns 一个你不能存储到会话中的对象(有一种方法可以将对象转换为数组,但我不建议你存储整个对象) http://php.net/manual/de/function.get-object-vars.php
这样使用:
$result = $connection->query("select something from table");
$_SESSION['session-name'] = $result->fetch_assoc();
或
$sql = `select something from table`;
$result = mysqli_query($sql);
$_SESSION['session name'] = mysqli_fetch_assoc($result);