会话在yii中无法正常工作

时间:2014-01-04 08:01:07

标签: session yii

我在什么时候使用会话  UserController的   actionlogin

             $userid=User::model()->fetch($username,$password);
            //  var_dump($userid);
             Yii::app()->SESSION['srid']=$userid;

在用户模型中我有

 public function fetch($username,$password)
{

    $sql="select id FROM user where ( username='".$username. "' AND password='".$password."')";
    $connection=Yii::app()->db;
    $command=$connection->createCommand($sql);
    $resuserid=$command->queryAll();
    //var_dump($resuserid);
    $result=array();
    foreach($resuserid as $key=>$val)
    {$result[]=$val;}
    return $result;
    }

当我在其他控制器中访问它时

人员控制器

我需要存储

$model->personid=Yii::app()->SESSION['srid'];

的结果
var_dump($model->personid);

东西

  array
0 => 
array
  'id' => string '24' (length=2)

确切的ID是'24',但它显示为字符串'24'

错误是

  personid must be a number.

东西是会话将它存储为字符串,但我需要它作为整数,因为personid是整数..........

我想知道我们要在config / main中配置会话......我需要一个db吗

请帮助我失去理智

2 个答案:

答案 0 :(得分:0)

从您的代码中$result是一个数组而不是字符串或int。

{$result[]=$val;}

应该是

{$result=$val;}

查看yii-user's implementation of UserIdentity以获得处理登录的更好方法。

答案 1 :(得分:0)

试试这个

public function fetch($username,$password)
{

    $sql="select id FROM user where ( username='".$username. "' AND password='".$password."')";
    $connection=Yii::app()->db;
    $command=$connection->createCommand($sql);
    // use queryColumn if you have to fetch only a single column
    $resuserid=$command->queryColumn();
    //var_dump($resuserid);
    $result=array();
    foreach($resuserid as $val)
    {
         // you can cast each value as integer like this
        $result=(int) $val;

    }
    return $result;
    }

注意: - 会话仅将整数存储为整数。问题是你将它存储为字符串 如果您的查询只返回一个值,那么您应该使用queryScalar()。