Как устранить ошибку Laravel и MySql, вызванную SQLSTATE [23000]

0

Я хочу создать регистрационную форму. Итак, я создал файл RegShortController.php и после создания файла вида RegShort.blade.php. В файле RegShortController.php я использовал функцию с именем insert. Но, когда я запускаю веб-сайт, я получил эту ошибку -

" SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'name' cannot be null (SQL: insert into академическое ( имя , имя пользователя , pw ) values (,, )), ) values (,, )) "

Итак, как исправить это?

Изображение 174551

Вот файл 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');
  • 1
    присвоить значение столбцу имени или удалить ограничения из таблицы
  • 0
    почему вы не используете Model ..?
Показать ещё 8 комментариев
Теги:

4 ответа

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

}

BTW было бы хорошо проверить данные с помощью javascript, а также перед отправкой данных на сервер (проверка на стороне клиента).

Редактировать ur HTML, uve пропущенные атрибуты имени для входов ur:

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

Также измените маршруты ur:

Route::get('/RegShort', 'RegShortController@index')->name('RegShort');
Route::post('/RegShort', 'RegShortController@insert');
  • 0
    Если его поле name действительно необходимо, он также может добавить к нему required атрибут.
  • 0
    @ ЛевМакаренко - Теперь там написано: «Локальная страница не работает. Локальный хост перенаправляет вас слишком много раз». Итак, как это исправить ??
Показать ещё 8 комментариев
1

Кажется, что вы не можете получить данные из объекта $ req. Обязательно проверьте свои данные перед вставкой в таблицу.

  • 0
    Как я могу это сделать ??
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>
  • 0
    К сожалению, я удалил атрибуты имени в имени пользователя и пароле при редактировании этой темы. Теперь я исправил это.
1

Попробуйте обновить html:

Вы являетесь messing: атрибут name здесь

<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>
  • 0
    К сожалению, я удалил атрибуты имени в имени пользователя и пароле при редактировании этой темы. Теперь я исправил это. Любой, помощь для этого имени пустая ошибка ??

Ещё вопросы

Сообщество Overcoder
Наверх
Меню