我只想问一下,如何使用laravel 4获取此代码的值?
$auth = DB::select(
'SELECT auth FROM users WHERE username like ?'
, array($username)
);
当我显示代码的结果时,它回显“Array”并且它总是将用户重定向到'anotherpage',我实际上是这样做的:
if (Auth::attempt($userdata))
{
if ($auth==0)
{
return Redirect::to('home');
}
elseif ($auth==1)
{
return Redirect::to('dashboard');
}
else
{
return Redirect::to('anotherpage');
}
}
请帮忙。先感谢您。
答案 0 :(得分:2)
首先,为什么要通过Auth类和手动SELECT查询对用户进行两次身份验证? Auth::attempt
就够了。 Read it here.
无论如何,假设您真的想这样做,您的代码无法正常工作,因为您在$auth
语句中将if
分配给0;所以这个:
if($auth = 0)
基本上是这样的:
if(0) //Which is always false
所以,我将if语句改为:
if($auth == 0)
if(Auth::attempt($userdata))
{
$auth = DB::table('users')->where('username', '=', $username)->first()->auth;//Don't use "LIKE" as it may cause huge security issues.
if($auth == 0) {
return Redirect::to('home');
}
else if($auth == 1) {
return Redirect::to('dashboard');
}
else {
return Redirect::to('anotherpage');
}
}
答案 1 :(得分:1)
当您尝试回显数组时会发生这种情况。请改用print_r()
。它打印数组(或变量)内容的可读输出:
$myArray = DB::select('SELECT auth FROM users WHERE username like ?', array($username));
print_r($myArray);
这样,您将看到数组的内容,然后您可以显示特定项目。
将其封装在<pre>
标签中会使输出更具可读性:
echo '<pre>';
print_r($myArray);
echo '</pre>';
或者简单地说:
echo '<pre>', print_r($myArray), '</pre>';
答案 2 :(得分:1)
您使用的查询构建器错误。试试这个:
$auth = DB::table('users')->select('auth')->where('username', 'LIKE', $username)->get();
dd($auth);