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

时间:2017-08-04 10:57:04

标签: php mysql laravel

我想创建一个注册表单。所以,我创建了一个RegShortController.php文件,并在创建了名为RegShort.blade.php的视图文件之后。在RegShortController.php文件中,我使用了一个名为insert的函数。但是,当我运行网站时,我收到了这个错误 -

  

" SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'name' cannot be null (SQL: insert into {学术{1}} {名称{1}}的用户名( {PW {1}}"

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

enter image description here

  

这是RegShort.blade.php文件

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

,
  

这是RegShortController.php文件

,
  

这是我创建的路线。

)
  values (, , ))

4 个答案:

答案 0 :(得分:3)

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);

}

在将数据发送到服务器(客户端验证)之前,通过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');

答案 1 :(得分:1)

您似乎无法从$ req对象获取数据。在插入表格之前一定要检查数据。

答案 2 :(得分:1)

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

<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>

答案 3 :(得分:1)

尝试更新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>