Я хочу сохранить результат запроса 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 */ }
Попробуй это:
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); }
в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); }
Если вы хотите хранить данные не только для одного клиента, но и для серверов, я бы рекомендовал вам посмотреть, как создать кеш-сервер на стороне сервера в php? , В некоторых структурах это уже встроено.
В противном случае используйте один из методов API mysqli, например http://php.net/manual/de/mysqli-result.fetch-assoc.php , это должно вернуть вам массив, а не объект.
mysqli_query () возвращает объект, который вы не можете хранить в сеансе (есть метод преобразования объекта в массив, но я бы не рекомендовал вам хранить весь объект) http://php.net/manual/de/ function.get-объект-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);