【问题标题】:Using PHP SESSION Variables to store MySQL query results [duplicate]使用 PHP SESSION 变量存储 MySQL 查询结果 [重复]
【发布时间】:2014-07-21 20:46:58
【问题描述】:

我想在一个文件中执行查询,将其存储在会话变量中,然后在另一个文件中访问结果。

文件1.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)

文件2.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>";
}

关于我做错了什么有什么想法吗?或者,还有其他方法可以完成我在这里尝试做的事情吗?

【问题讨论】:

    标签: php mysql mysqli session-variables


    【解决方案1】:

    你有两个问题:

    1. 按照他们告诉您的方式尝试存储类实例(请记住,该类应实现 __sleep()__wakeup(),因此您可以选择如何序列化对象 - 您将在序列化中包含哪些成员,以及您将如何反序列化时重新初始化其他成员 - 还请记住,当您 unserualiza 这样的对象时,对象的类必须定义)。
    2. 试图存储,特别是,一个 myqsli 对象。这些对象包含对可以收集的资源的引用,因此即使您成功序列化此类对象,它们的内部引用也不再有效。

    如前所述,您的最终解决方案是获取行并将它们保持在会话中。如果您不想保留行(您告诉过只有一行,但也许您不想急切获取),请保留一个包含数据的数组以定义并绑定查询再次。

    【讨论】:

      【解决方案2】:

      将实际数组存储在会话中:

      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);
      

      【讨论】:

      • 太棒了!这很有帮助,但不幸的是,有时我的数据会有多行。我应该如何运行循环来完成我的任务?
      • @user2771279 已编辑解决方案
      • 嗯,这对我来说似乎无限运行。假设是 mysqli_fetch_array(mysqli_query($conn, $query))?
      • @user2771279 糟糕,是的,愚蠢的错误。很抱歉,将编辑!
      猜你喜欢
      • 2016-10-29
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 2017-12-24
      • 2014-11-23
      • 2019-03-21
      • 1970-01-01
      • 2019-12-29
      相关资源
      最近更新 更多