【问题标题】:SQLSTATE[42S02]: Base table or view not found: 1146 Table X doesn't existSQLSTATE [42S02]:未找到基表或视图:1146 表 X 不存在
【发布时间】:2015-09-22 21:27:57
【问题描述】:

我在 Laravel 5 中遇到此错误:

SQLSTATE[42S02]:未找到基表或视图:1146 表 'intern.users' 不存在(SQL:select * from users where username = admin limit 1)

config/database.php

        'mysql' => [
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => 'intern',
    'username'  => 'root',
    'password'  => '',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
    'strict'    => false,
],

管理页面调用了函数admin,其中数据库表被称为admin,因为里面有很多表。

    public function admin(Request $request){

           if($request->isMethod('get')){
           return \View::make('student.admin');
        } else
    {


        $check=0;
        $check=\DB::table('admin')->get();
        $username = Input::get('username');
        $password = Input::get('password');



     $data=array(
     'username'=>$request->get('username'),
     'password'=>$request->get('password')
    );

    if(\Auth::attempt($data))
    {
        return redirect::intended('student/index');
    }
    else
    {
        return redirect('student/admin');
    }


        }   



       }    

表格在这里:

  <div id="pageContent"><br />
<div align="left" style="margin-left:24px;">
  <h2>Please Log In To Manage</h2>
  {!! Form::open(array('url' => '/admin')) !!}
  <input type="hidden" name="_token" value="{{ csrf_token() }}">


    User Name:<br />
      <input name="username" type="text" id="username" size="40" />
    <br /><br />
    Password:<br />
   <input name="password" type="password" id="password" size="40" />
   <br />
   <br />
   <br />

     <input type="submit" name="button" id="button" value="Log In" />


 {!! Form::close() !!}

【问题讨论】:

  • 你使用什么认证驱动程序?
  • 'driver' => '雄辩',这个
  • "table" 字段被数据库驱动使用,"model" 被 Eloquent 驱动使用。因此,如果您有 Eloquent Admin 模型,则将模型配置值更改为该类,否则切换到数据库身份验证驱动程序并将表配置值更改为 admin
  • @deepsingh 不,你不应该存储为纯文本,你应该在存储之前对其进行哈希处理,然后只有 laravel 可以重新哈希并进行身份验证。您想知道如何进行哈希和存储密码吗?
  • @halfer 谢谢 :) 我明白了这一点,以后也会这样做!感谢您的反馈 :) 干杯!

标签: php mysql laravel laravel-5


【解决方案1】:

首先,您应该散列并创建用户详细信息,以使该列准备好进行身份验证。

这里我已经给出了实现它的步骤。

第 1 步:获取输入

$UserData = Input::all();

第 2 步:创建条目 - 插入用户表

User::create($UserData);

注意:

users 表中应该有以下这些列

  1. 电子邮件,
  2. 密码
  3. created_at
  4. updated_at

其他设置:

在你的 User.php(模型)中有这一行

protected $fillable = ['email', 'password'];

这是我给你的小登录代码,对你来说足够简单

如果你愿意,可以试试这个

$email = $this->request->input('email');
$password = $this->request->input('password');
if (Auth::attempt(['email' => $email, 'password' => $password])) #If the Credentials are Right
{
 return redirect::intended('student/index'); #Your Success Page
}
else
{
 return redirect('student/admin'); #Your Failure Page
}

推荐:

我还建议在创建之前validate 用户输入

补充说明:

如果你看到你的桌子并且你的密码是加密的,这意味着你已经完成了;)

【讨论】:

  • 我在 php my admin 中检查密码.. 但它以相同的方式出现.. 未加密
  • 你用这段代码插入数据User::create($UserData);?
  • 如果你想立即测试,这里有一个哈希密码$2y$10$nTcLwPJXvWkcd1g.xWxYueeJeSDarKm7nGOWDX/tHFc8Sv.kQyFJW,代表adminadmin。将其放在密码字段中以立即进行测试
  • 酷,这就是重点。这是admin 管理员$2y$10$lVoViB8RyqIF5NdsNEf85e4Z/fwNzFrLVez6vsOVJUc29NXPbXbwe 的哈希值,请查看我的个人资料;)
  • @deepsingh:我们试图阻止提问者请求电子邮件/VOIP 详细信息,因为您似乎想要一个免费的私人支持渠道。最好在公共场合接受帮助,这样人们将来可以从问答中受益。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-22
  • 2018-04-19
  • 2015-10-05
  • 2018-06-30
  • 2021-05-13
  • 2021-10-17
  • 2020-04-28
相关资源
最近更新 更多