我在什么时候使用会话 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吗
请帮助我失去理智
答案 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()。