繁体   English   中英

如何解决Laravel和MySql错误,称为SQLSTATE [23000]

[英]How To Solve Laravel and MySql Error Called SQLSTATE[23000]

我想创建一个注册表。 因此,我创建了一个RegShortController.php文件,并创建了名为RegShort.blade.php视图文件。 RegShortController.php文件中,我使用了一个名为insert的函数。 但是,当我运行网站时,出现此错误-

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'name' cannot be null (SQL: insert into学术( name , username , pw ) values (, , ))

那么,如何解决这个问题?

在此处输入图片说明

这是RegShort.blade.php文件

不幸的是,当我编辑此线程时,我已经删除了用户名和密码中的名称属性。 现在,我修复了它。

<form action="{{ route('RegShort') }}" method="post" enctype="multipart/form-data">

{{ csrf_field() }}

<div class="form-group">
    <label>Name : *</label>
    <input type="text" class="form-control" name="name">
  </div>

  <div class="form-group">
    <label>Username : *</label>
    <input type="text" class="form-control" name="username" required>
  </div>

  <div class="form-group">
    <label>Password : *</label>
    <input type="password" class="form-control" name="password">
  </div>

  <button type="submit" class="btn btn-primary" name="submit">Submit</button>

</form>

这是RegShortController.php文件

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;

class RegShortController extends Controller
{

    public function index()
    {
        return view('RegShort');
    }

    function insert(Request $req)
    {

        $name = $req->input('name');
        $username = $req->input('username');
        $password = $req->input('password');

        $data = array("name"=>$name,'username'=>$username,"pw"=>$password);

        DB::table('academic')->insert($data);

    }

}

这是我创建的路线。

Route::any('/RegShort', 'RegShortController@insert')->name('RegShort');

name字段必须为非空,因此您应在插入数据之前对其进行验证(服务器端验证):

function insert(Request $req)
{

    $this->validate($req, [
       'name' => 'required'
    ]);

    $name = $req->input('name');
    $username = $req->input('username');
    $password = $req->input('password');

    $data = array("name"=>$name,'username'=>$username,"pw"=>$password);

    DB::table('academic')->insert($data);

}

在将数据发送到服务器之前(客户端验证),BTW也可以通过javascript验证数据。

编辑您的HTML,您输入的名称属性被遗忘:

<form action="{{ route('RegShort') }}" method="post" enctype="multipart/form-data">

{{ csrf_field() }}

<div class="form-group">
    <label>Name : *</label>
    <input type="text" class="form-control" name="name">
  </div>

  <div class="form-group">
    <label>Username : *</label>
    <input type="text" class="form-control" name="username" required>
  </div>

  <div class="form-group">
    <label>Password : *</label>
    <input type="password" name="password" class="form-control">
  </div>

  <button type="submit" class="btn btn-primary" name="submit">Submit</button>

</form>

同时更改您的路线:

Route::get('/RegShort', 'RegShortController@index')->name('RegShort');
Route::post('/RegShort', 'RegShortController@insert');

看来您无法从$ req对象获取数据。 插入表之前,请务必检查数据。

您没有用户名和密码的名称属性

<div class="form-group">
    <label>Name : *</label>
    <input type="text" class="form-control" name="name">
  </div>

  <div class="form-group">
    <label>Username : *</label>
    <input type="text" name="username" class="form-control" required>
  </div>

  <div class="form-group">
    <label>Password : *</label>
    <input type="password" name="password" class="form-control">
  </div>

尝试更新html:

你搞砸了:这里的名称属性

<input type="text" name="username" class="form-control" required>
<input type="password" name="password" class="form-control">

码:

<form action="{{ route('RegShort') }}" method="post" enctype="multipart/form-data">

{{ csrf_field() }}

<div class="form-group">
    <label>Name : *</label>
    <input type="text" class="form-control" name="name">
  </div>

  <div class="form-group">
    <label>Username : *</label>
    <input type="text" name="username" class="form-control" required>
  </div>

  <div class="form-group">
    <label>Password : *</label>
    <input type="password" name="password" class="form-control">
  </div>

  <button type="submit" class="btn btn-primary" name="submit">Submit</button>

</form>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM