質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

Q&A

解決済

2回答

3464閲覧

SQLSTATE[HY000]: General error: 1366 Incorrect integer value:

mimitaro

総合スコア0

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

0グッド

0クリップ

投稿2021/11/15 12:47

編集2021/11/16 10:25

前提・実現したいこと

Laravelで商品の販売管理システムのためのWEBアプリケーションを作成しており、商品登録機能を実装させようとしたところ、登録ボタンを押すと500エラーになってしまいます。エラーログで出た文章は以下です。

発生している問題・エラーメッセージ

local.ERROR: SQLSTATE[HY000]: General error: 1366 Incorrect integer value: 'a' for column 'price' at row 1 (SQL: insert into `products` (`product_name`, `price`, `stock`, `comment`, `updated_at`, `created_at`) values (a, a, a, a, 2021-11-15 18:28:37, 2021-11-15 18:28:37)) {"exception":"[object] (Illuminate\Database\QueryException(code: HY000): SQLSTATE[HY000]: General error: 1366 Incorrect integer value: 'a' for column 'price' at row 1 (SQL: insert into `products` (`product_name`, `price`, `stock`, `comment`, `updated_at`, `created_at`) values (a, a, a, a, 2021-11-15 18:28:37, 2021-11-15 18:28:37)) at C:\MAMP\htdocs\Laravel_Project\vendor\laravel\framework\src\Illuminate\Database\Connection.php:664, PDOException(code: HY000): SQLSTATE[HY000]: General error: 1366 Incorrect integer value: 'a' for column 'price' at row 1 at C:\MAMP\htdocs\Laravel_Project\vendor\laravel\framework\src\Illuminate\Database\Connection.php:458)

Route

1 2// 商品一覧画面を表示 3Route::get('/product', 'ProductController@showList')->name('products'); 4 5// 商品登録画面を表示 6Route::get('/product/create', 'ProductController@showCreate')->name('create'); 7 8// 商品登録 9Route::post('/product/store', 'ProductController@exeStore')->name('store'); 10

Model

1<?php 2 3namespace App\Models; 4 5use Illuminate\Database\Eloquent\Model; 6 7class Product extends Model 8{ 9 //テーブル名 10 protected $table = 'products'; 11 12 // 可変項目 13 protected $fillable = 14 [ 15 'company_id', 16 'product_name', 17 'price', 18 'stock', 19 'comment' 20 ]; 21} 22

Controller

1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6use App\Models\Product; 7use App\Http\Requests\ProductRequest; 8 9class ProductController extends Controller 10{ 11 /** 12 * 商品一覧を表示する 13 * 14 * @return view 15 */ 16 public function showList() 17 { 18 $products = Product::all(); 19 return view('product.list', ['products' => $products]); 20 } 21 22 /** 23 * 商品詳細を表示する 24 * @param int $id 25 * @return view 26 */ 27 public function showDetail($id) 28 { 29 $product = Product::find($id); 30 31 if (is_null($product)) { 32 \Session::flash('err_msg', 'データがありません。'); 33 return redirect(route('products')); 34 } 35 return view('detail.detail', ['product' => $product]); 36 } 37 38 /** 39 * 商品登録画面を表示する 40 * 41 * @return view 42 */ 43 public function showCreate() 44 { 45 return view('create.create'); 46 } 47 48 /** 49 * 商品を登録する 50 * 51 * @return view 52 */ 53 public function exeStore(ProductRequest $request) 54 { 55 // 商品のデータを受け取る 56 $inputs = $request->all(); 57 dd($inputs); 58 59 \DB::beginTransaction(); 60 try { 61 // 商品を登録 62 Product::create($inputs); 63 \DB::commit(); 64 } catch(\Throwable $e) { 65 \DB::rollback(); 66 abort(500); 67 } 68 69 \Session::flash('err_msg', '商品を登録しました。'); 70 return redirect(route('products')); 71 } 72 73 /** 74 * 商品編集フォームを表示する 75 * @param int $id 76 * @return view 77 */ 78 public function showEdit($id) 79 { 80 $product = Product::find($id); 81 82 if (is_null($product)) { 83 \Session::flash('err_msg', 'データがありません。'); 84 return redirect(route('products')); 85 } 86 return view('edit.edit', ['product' => $product]); 87 } 88 89 /** 90 * 商品を更新する 91 * 92 * @return view 93 */ 94 public function exeUpdate(ProductRequest $request) 95 { 96 // 商品のデータを受け取る 97 $inputs = $request->all(); 98 99 \DB::beginTransaction(); 100 try { 101 // 商品を更新 102 $product = Product::find($inputs['id']); 103 104 $product->fill([ 105 'product_name' => $inputs['product_name'], 106 'price' => $inputs['price'], 107 'stock' => $inputs['stock'], 108 'comment' => $inputs['comment'] 109 ]); 110 $product->save(); 111 112 \DB::commit(); 113 } catch(\Throwable $e) { 114 \DB::rollback(); 115 abort(500); 116 } 117 118 \Session::flash('err_msg', '商品を更新しました。'); 119 return redirect(route('products')); 120 } 121 122 /** 123 * 商品を削除する 124 * @param int $id 125 * @return view 126 */ 127 public function exeDelete($id) 128 { 129 if (empty($id)) { 130 \Session::flash('err_msg', 'データがありません。'); 131 return redirect(route('products')); 132 } 133 134 try { 135 // 商品を削除 136 Product::destroy($id); 137 } catch(\Throwable $e) { 138 abort(500); 139 } 140 141 \Session::flash('err_msg', '商品を削除しました。'); 142 return redirect(route('products')); 143 } 144} 145

layout

1<!DOCTYPE HTML> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="csrf-token" content="{{ csrf_token() }}"> 6 <title>@yield('title')</title> 7 <link rel="stylesheet" href="/css/app.css"> 8 <script src="/js/app.js" defer></script> 9</head> 10<body> 11 <header> 12 @include('create.header') 13 </header> 14 <br> 15 <div class="container"> 16 @yield('create.content') 17 </div> 18 <footer class="footer bg-dark fixed-bottom"> 19 @include('product.footer') 20 </footer> 21</body> 22</html> 23

create

1 2@extends('create.layout') 3@section('title', '商品登録') 4@section('create.content') 5<div class="row"> 6 <div class="mb-5 col-md-6 col-md-offset-2"> 7 <h2>商品登録フォーム</h2> 8 <form method="POST" action="{{ route('store') }}" onSubmit="return checkSubmit()"> 9 @csrf 10 11 <div class="form-group"> 12 <label for="title"> 13 商品名 14 </label> 15 <input 16 id="product_name" 17 name="product_name" 18 class="form-control col-md-6" 19 value="{{ old('product_name') }}" 20 type="text" 21 > 22 @if ($errors->has('product_name')) 23 <div class="text-danger"> 24 {{ $errors->first('product_name') }} 25 </div> 26 @endif 27 </div> 28 29 <div class="form-group"> 30 <label for="company_name"> 31 メーカー 32 </label> 33 <br> 34 <select class="form-control col-md-3" name="company_name"> 35 <option value="1"></option> 36 <option value="2"></option> 37 </select> 38 @if ($errors->has('company_name')) 39 <div class="text-danger"> 40 {{ $errors->first('company_name') }} 41 </div> 42 @endif 43 </div> 44 45 <div class="form-group"> 46 <label for="price"> 47 価格 48 </label> 49 <input 50 id="price" 51 name="price" 52 class="form-control col-md-3" 53 value="{{ old('price') }}" 54 type="text" 55 > 56 @if ($errors->has('price')) 57 <div class="text-danger"> 58 {{ $errors->first('price') }} 59 </div> 60 @endif 61 </div> 62 63 <div class="form-group"> 64 <label for="stock"> 65 在庫数 66 </label> 67 <input 68 id="stock" 69 name="stock" 70 class="form-control col-md-3" 71 value="{{ old('stock') }}" 72 type="text" 73 > 74 @if ($errors->has('stock')) 75 <div class="text-danger"> 76 {{ $errors->first('stock') }} 77 </div> 78 @endif 79 </div> 80 81 <div class="form-group"> 82 <label for="comment"> 83 コメント 84 </label> 85 <textarea 86 id="comment" 87 name="comment" 88 class="form-control" 89 rows="4" 90 >{{ old('comment') }}</textarea> 91 @if ($errors->has('comment')) 92 <div class="text-danger"> 93 {{ $errors->first('comment') }} 94 </div> 95 @endif 96 </div> 97 98 <div class="form-group"> 99 <label for="image"> 100 商品画像 101 </label> 102 <br> 103 <input id="image" type="file" name="image"> 104 @if ($errors->has('image')) 105 <div class="text-danger"> 106 {{ $errors->first('image') }} 107 </div> 108 @endif 109 </div> 110 111 <div class="mt-5"> 112 <a class="btn btn-secondary" href="{{ route('products') }}"> 113 キャンセル 114 </a> 115 <button type="submit" class="btn btn-primary"> 116 登録する 117 </button> 118 </div> 119 </form> 120 </div> 121</div> 122<script> 123function checkSubmit(){ 124if(window.confirm('送信してよろしいですか?')){ 125 return true; 126} else { 127 return false; 128} 129} 130</script> 131@endsection 132

試したこと

適当な値を入力し、dd($inputs);で入力した値の取得ができていることは確認済みです。

補足情報(FW/ツールのバージョンなど)

Laravel5.8
PHP7.4.16
Windows
MAMP
VSCode

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

コードの変更はしていないのに何故か突然登録できるようになりました。
色々とコードを見ていただきありがとうございました。
今回の原因は結局分かりませんでしたが、今後また何かで詰まった時に質問させていただきます。

投稿2021/11/16 14:53

mimitaro

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

エラーの通り、数値型のカラムに文字列を投入しているからでは。

投稿2021/11/15 13:00

m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mimitaro

2021/11/15 13:20

int型のカラムには半角数字で入力しています。 エラー文を見る限りではそのようですがdd($inputs)で取得したデータにはきちんと数値で反映されています。
m.ts10806

2021/11/15 13:25

ただ、実際にSQLになったときは文字列になっているわけですから、 どこか紐づけ間違ってるのではないでしょうか。 現状のコードから判断はできませんが。 dd($inputs)はどこに入れてどういう結果が出たのかコピペで提示してもらえますか?
mimitaro

2021/11/15 13:50

/** * 商品を登録する * * @return view */ public function exeStore(ProductRequest $request) { // 商品のデータを受け取る $inputs = $request->all(); dd($inputs); \DB::beginTransaction(); try { // 商品を登録 Product::create($inputs); \DB::commit(); } catch(\Throwable $e) { \DB::rollback(); abort(500); } \Session::flash('err_msg', '商品を登録しました。'); return redirect(route('products')); } これで確認しました。 この時点では適当な値を入力し、$inputsの中に入っていることが確認できています。 dd($inputs);の結果は以下です。 array:7 [▼ "_token" => "4e11dkg9u7XovEhXwEUDiiglEGbtzA5egUtJsMKr" "product_name" => "test" "company_name" => "1" "price" => "1" "stock" => "1" "comment" => "test" "image" => null ]
mimitaro

2021/11/15 13:52

company_nameとimageはまだ未設定のため、requestはrequiredにしていません。
m.ts10806

2021/11/15 13:55

質問本文に追記していただければと。 Productの定義もあったほうが良さそうですね。
mimitaro

2021/11/15 14:28

どこから壊れたのかわからないので、とりあえずRouteとControllerはすべてコピペしました。
m.ts10806

2021/11/15 20:09

肝心のProductがないですね。App\Models\Product
mimitaro

2021/11/16 03:25

すみません。。 今出先なので、帰宅次第追記します。
mimitaro

2021/11/16 10:26

すみません、Model追記しました。
mimitaro

2021/11/16 10:27

文字数の関係でRouteは商品登録までにしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問