Php Laravel正在尝试添加到数据库

Php Laravel正在尝试添加到数据库,php,mysql,laravel,Php,Mysql,Laravel,我是拉威尔框架的新手。我正在尝试从表单保存到数据库 例如: 输入蒸汽标识: 输入访问: 控制器: public function admins_add() { $serveradmins = DB::table('server_admins')->first(); $this->title('Add admins'); $this->pageView('servers::admins_add', ['serveradmins' => $serv

我是拉威尔框架的新手。我正在尝试从表单保存到数据库

例如:

  • 输入蒸汽标识:
  • 输入访问:
控制器:

public function admins_add()
{
    $serveradmins = DB::table('server_admins')->first();
    $this->title('Add admins');
    $this->pageView('servers::admins_add', ['serveradmins' => $serveradmins]);
    DB::table('server_admins')->insert(
        array(
            $serveradmins->auth = Input::get('steam-id'),
            $serveradmins->access = Input::get('access'),
            $serveradmins->password = 'nopass',
            $serveradmins->flags = 'ce',
            $serveradmins->added_by = Input::get('added_by')
        )
    );
    $serveradmins->save();
    return Redirect::back();
}
观点:

<div class="page page-servers page-servers-admin-form">
    <form method="POST" action="/admin/servers/admins/create" accept-charset="UTF-8" class="form-horizontal">
        <div class="form-group ">
            <label for="title" class="col-sm-3 control-label">STEAM ID</label>
            <div class="col-sm-9">
                <input name="steam-id" type="text" id="steam-id">
            </div>
        </div>

        <div class="form-group ">
            <label for="access" class="col-sm-3 control-label">Teisės</label>
            <div class="col-sm-9">
                <input name="access" type="hidden" value="" id="access">
                <select id="access" name="access"><option value="" selected="selected">-</option>
                    <option value="abcdefghijklmnopqrstuv">Owner</option>
                    <option value="bcdfijmnopqruv">Admin</option>
                    <option value="3" disabled>PREMIUM</option>
                </select>
            </div>
        </div>

        <div class="form-actions">
            <button type="submit" name="_form_submit" class="btn btn-default" value="1">
                <i class="fas fa-save "></i> 
                SAVE!
            </button>
            <button type="button" onclick="document.location.href='/admin/servers/admins'"  class="btn btn-default">
                <i class="fas fa-times "></i> Cancel
            </button>
        </div>
    </form>
</div>
</section>

如果我的代码很糟糕,请不要对我的代码生气,我对laravel是新手,非常喜欢它!谢谢大家的帮助:)

您的插入已关闭。它应该是key=>value对(其中key是数据库中的列名)。试一试

有关更多信息,请参阅。你也可以走雄辩的路线,做:

$serverAdmin = new ServerAdmin();
$serverAdmin->auth = Input::get('steam-id'),
$serverAdmin->access = Input::get('access'),
$serverAdmin->password = 'nopass',
$serverAdmin->flags = 'ce',
$serverAdmin->added_by = Input::get('added_by')
$serverAdmin->save();

您的插入已关闭。它应该是key=>value对(其中key是数据库中的列名)。试一试

有关更多信息,请参阅。你也可以走雄辩的路线,做:

$serverAdmin = new ServerAdmin();
$serverAdmin->auth = Input::get('steam-id'),
$serverAdmin->access = Input::get('access'),
$serverAdmin->password = 'nopass',
$serverAdmin->flags = 'ce',
$serverAdmin->added_by = Input::get('added_by')
$serverAdmin->save();

第一:为什么要在
get
路径中执行
admins\u add()
?创建一个名为
index()
的函数以便于理解,并告诉该函数返回如下视图

public function index() {
$serveradmins = DB::table('server_admins')->first();
return view('viewname')->with('serveradmins', $serveradmins);
}
然后,您的
管理员\u add()
应该如下所示:

public function admins_add(Request $request)
{
       ServerAdmin::create([
        'auth' => $request->steam-id,
        'access' => $request->access,
        'password' => 'nopass',
        'flags' => 'ce',
        'added_by' => $request->added_by
        ]);     

    return Redirect::back();
}
在执行之前,通过CLI生成
ServerAdmin
模型(
php-artisan-make:Model-ServerAdmin
),并在此模型内将可填充项更改为

protected $fillable = [
          'auth',
          'access',
          'password',
          'flags',
          'added_by'
          ];
设定

protected $table = 'server_admins';
编辑:正如N Mahurin在评论中提到的那样——用这个解决方案来练习拉拉维尔。大规模任务有很大的安全风险。请在此阅读:

首先:为什么要在
get
路径中执行
admins\u add()
?创建一个名为
index()
的函数以便于理解,并告诉该函数返回如下视图

public function index() {
$serveradmins = DB::table('server_admins')->first();
return view('viewname')->with('serveradmins', $serveradmins);
}
然后,您的
管理员\u add()
应该如下所示:

public function admins_add(Request $request)
{
       ServerAdmin::create([
        'auth' => $request->steam-id,
        'access' => $request->access,
        'password' => 'nopass',
        'flags' => 'ce',
        'added_by' => $request->added_by
        ]);     

    return Redirect::back();
}
在执行之前,通过CLI生成
ServerAdmin
模型(
php-artisan-make:Model-ServerAdmin
),并在此模型内将可填充项更改为

protected $fillable = [
          'auth',
          'access',
          'password',
          'flags',
          'added_by'
          ];
设定

protected $table = 'server_admins';
编辑:正如N Mahurin在评论中提到的那样——用这个解决方案来练习拉拉维尔。大规模任务有很大的安全风险。请在此阅读:

您能否快速解释一下到底哪里出了问题,您认为哪一步不正确?如果您有任何错误,您是否也可以说明这些错误是什么?输入并选择使用相同的id和名称“access”?并将get/post路由到相同的方法?@ken9999有一个很好的观点。发送给admins_add()的请求将使用html元素的名称作为键。确保所有html元素的名称和ID都是唯一的。可能有人可以制作一个非常简单的运行示例,在您看到保存到db的数据后,最好不使用所有css,然后返回修改视图并添加更多inputsempty表单,只使用一个输入(不使用所有css)>路由>控制器方法(Request$Request)>保存$Request->input()对于DBA,您能否快速解释一下到底什么是错误的,以及您认为哪一步是错误的?如果您有任何错误,您是否也可以说明这些错误是什么?输入并选择使用相同的id和名称“access”?并将get/post路由到相同的方法?@ken9999有一个很好的观点。发送给admins_add()的请求将使用html元素的名称作为键。确保所有html元素的名称和ID都是唯一的。可能有人可以制作一个非常简单的运行示例,在您看到保存到db的数据后,最好不使用所有css,然后返回修改视图并添加更多inputsempty表单,只使用一个输入(不使用所有css)>路由>控制器方法(Request$Request)>保存$Request->input()您可能希望在DBA中添加批量分配,虽然方便,但在您提到的Sure and good中列出了安全漏洞。但我认为,对于一个开始学习拉威尔的人来说,理解雄辩的正确性很重要,这是我最容易的开始。但是@op记住他的建议!您可能希望添加批量分配,虽然方便,但在您提到的Sure and good中列出了安全漏洞。但我认为,对于一个开始学习拉威尔的人来说,理解雄辩的正确性很重要,这是我最容易的开始。但是@op记住他的建议!谢谢你的回答。现在我遇到了一个非常奇怪的错误:hash_equals():预期user_字符串为字符串,null表示答案。现在我遇到了一个非常奇怪的错误:hash_equals():预期user_字符串为字符串,给定null