-2

我只想问,我如何用 laravel 4 获取这段代码的值?

$auth = DB::select(
    'SELECT auth FROM users WHERE username like ?'
    , array($username)
);

当我显示代码的结果时,它会回显“数组”并且它总是将用户重定向到“另一个页面”,我实际上是在这样做:

if (Auth::attempt($userdata))
{
    if ($auth==0)
    {
        return Redirect::to('home');
    }
    elseif ($auth==1)
    {
        return Redirect::to('dashboard');
    } 
    else 
    {
        return Redirect::to('anotherpage');
    }
}

请帮忙。先感谢您。

4

3 回答 3

2

首先,为什么要通过 Auth 类和手动 SELECT 查询对用户进行两次身份验证?Auth::attempt足够的。在这里阅读。

无论如何,假设您真的想这样做,您的代码无法正常工作,因为您在语句中分配$auth了 0 ;if所以这 :

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');
  }
}
于 2013-09-01T06:47:56.700 回答
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>';
于 2013-08-31T17:42:32.620 回答
1

您错误地使用了查询生成器。尝试这个:

$auth = DB::table('users')->select('auth')->where('username', 'LIKE', $username)->get();
dd($auth);
于 2013-08-31T17:44:17.540 回答