Я хочу выполнить запрос в одном файле, сохранить его в переменной сеанса и получить доступ к результату в другом файле.
File1.php:
//This is the file I have executed my sql statement in //I have already done session_start(); and initialized $conn $query = //my query. I know it is working because I have tested it elsewhere, so I // don't believe it is the problem $_SESSION['query2'] = mysqli_query($conn, $query)
File2.php:
//This is the file I want to access my query results in. //I have already done session_start(); and initialized $conn $tempArray = $_SESSION['query2']; if (isset($tempArray)) { $row = mysqli_fetch_array($tempArray, MYSQL_NUM); if ($row == null) { echo "<h1> error </h1>"; //This line gets executed } else { echo "<h1> works! </h1>"; } } else { echo "<h1> array not set </h1>"; }
Любые идеи относительно того, что я делаю неправильно? Или, есть ли другой способ выполнить то, что я пытаюсь сделать здесь?
Храните фактический массив в сеансе:
File1.php: $query = //my query. $result = array(); $res = mysqli_query($conn, $query); while($row = mysqli_fetch_array($res, MYSQL_NUM){ $result[] = $row; } $_SESSION['query2'] = $result; File2.php: //I have already done session_start(); and initialized $conn $tempArray = $_SESSION['query2']; var_dump($tempArray);
У вас есть две проблемы:
__sleep()
и __wakeup()
чтобы вы могли выбирать, как сериализовать объект – какие члены вы включите в сериализацию, и как вы будете повторно инициализировать другие участники, когда вы deserialize – также помните, что класс объекта должен быть определен, когда вы unserualiza
такой объект). Ваше конечное решение будет, как говорилось ранее, получать строки и сохранять их в сеансе. Если вы не хотите держать строки (вы сказали, что есть только одна строка, но, возможно, вы не хотите, чтобы они были нужны), сохраните массив с данными, чтобы определить и привязать запрос еще раз.