duanniu3385 2018-06-05 11:50
浏览 120
已采纳

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

Hi all i am trying to get active session users in codeigniter.So i am storing all my sessions in database and table name called ci_sessions and i got user data from ci_sessions table and i am trying to get user_name from data through foreach but i am getting only last active user.

Here is my code:

<?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'];

?>

Can anyone help me where i did mistake.

Thanks in advance.

  • 写回答

1条回答 默认 最新

  • dongxiaoyan4388 2018-06-05 11:55
    关注

    A small mistake you have done

    <?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(); I moved it out of foreach loop

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥100 H5网页如何调用微信扫一扫功能?
  • ¥15 讲解电路图,付费求解