代码之家  ›  专栏  ›  技术社区  ›  suresh

foreach循环只显示codeigniter中的最后一条记录,并获取在5分钟后记录的活动记录

  •  -2
  • suresh  · 技术社区  · 7 年前

    大家好,我试图在codeigniter中获取活动会话用户。因此,我将所有会话存储在名为ci_sessions的数据库和表名中,并从ci_sessions表中获取用户数据,我试图通过foreach从数据中获取用户名,但我只获取最后一个活动用户。

    这是我的代码:

    <?php
    $query = $this->db->query('SELECT * FROM ci_sessions');
    
    foreach ($query->result() as $row) {
        $session_data = $row->data;
    
        $return_data = array();  // array where you put your "BLOB" resolved data
    
        $offset = 0;
        while ($offset < strlen($session_data)) 
        {
            if (!strstr(substr($session_data, $offset), "|")) 
            {
                throw new Exception("invalid data, remaining: " . substr($session_data, $offset));
            }
            $pos = strpos($session_data, "|", $offset);
            $num = $pos - $offset;
            $varname = substr($session_data, $offset, $num);
            $offset += $num + 1;
            $data = unserialize(substr($session_data, $offset));
            $return_data[$varname] = $data;  
            $offset += strlen(serialize($data));
        }    
    }
    echo $return_data['user_name'];
    
    ?>
    

    有谁能帮我解决我犯的错误吗?

    提前谢谢。

    1 回复  |  直到 7 年前
        1
  •  2
  •   AbuHuraira Lakdawala    7 年前

    你犯的一个小错误

    <?php
    $query = $this->db->query('SELECT * FROM ci_sessions');
    $return_data = array();  // array where you put your "BLOB" resolved data
    foreach ($query->result() as $row) {
       $session_data = $row->data;
    
       $offset = 0;
       while ($offset < strlen($session_data)) 
        {
           if (!strstr(substr($session_data, $offset), "|")) 
            {
              throw new Exception("invalid data, remaining: " . substr($session_data, $offset));
            }
              $pos = strpos($session_data, "|", $offset);
              $num = $pos - $offset;
              $varname = substr($session_data, $offset, $num);
              $offset += $num + 1;
              $data = unserialize(substr($session_data, $offset));
              $return_data[$varname][] = $data;  
              $offset += strlen(serialize($data));
          }
    
          }
         var_dump( $return_data['user_name'][0] );
    
         foreach($return_data['user_name'] as $onesession) {
              echo $onesession;
              echo '<br>';
         }
    
    ?>
    

    $return_data=array();我将其移出foreach循环

    推荐文章