formから送らててきた値をmysqlにINSERTできず悩んでおります。
初心者でsql文が長すぎて、どこに問題があるか気が付けていないのですが、
もっとsql文を短くできる方法がありましたらご教授頂けないでしょうか。
とても長いSQL文で大変も見苦しい上、お手間がかかると思われとても申し訳ございません。
(子供たち用のwebアプリで個人で作成しているものなので公開しても問題ありません。)
データベースのテーブル
create table test(sno int auto_increment,uno int,day date,hour int,min int,tag int,place int,meal int,eaten int,q101 int,q102 int,q103 int,q104 int,q105 int,q106 int,q107 int,q108 int,q109 int,q201 int,q202 int,q203 int,q204 int,q205 int,q206 int,q207 int,q208 int,q209 int,q210 int,q211 int,q212 int,q213 int,q214 int,q215 int,q301 int,q302 int,q303 int,q304 int,q305 int,q306 int,q307 int,q308 int,q309 int,q310 int,q311 int,q312 int,q313 int,q314 int,q315 int,q316 int,q317 int,q318 int,q319 int,q320 int,q321 int,q401 int,q402 int,q403 int,q404 int,q405 int,q406 int,q407 int,q408 int,q409 int,q410 int,q411 int,q412 int,q413 int,q414 int,q415 int,q416 int,q417 int,q418 int,q419 int,q420 int,q421 int,q422 int,q423 int,q424 int,q425 int,q426 int,q427 int,q428 int,q429 int,q430 int,q431 int,q432 int,q433 int,q434 int,q435 int,q436 int,q437 int,q438 int,q439 int,q501 int,q502 int,q503 int,q504 int,q505 int,q506 int,q507 int,q508 int,q509 int,q510 int,q511 int,q512 int,q513 int,q514 int,q515 int,q550 int,q551 int,q552 int,q553 int,q554 int,q555 int,q556 int,q557 int,q558 int,q601 int,q602 int,q603 int,q604 int,q605 int,q606 int,q651 int,q652 int,q653 int,q661 int,q662 int,q663 int,q664 int,q665 int,q666 int,q701 int,q702 int,q703 int,q704 int,q705 int,q706 int,q707 int,q708 int,q709 int,q710 int,q711 int,q712 int,q713 int,q714 int,q715 int,q716 int,q717 int,q718 int,q801 int,q802 int,q803 int,q804 int,q805 int,q806 int,q807 int,q808 int,q809 int,q810 int,q811 int,q812 int,q850 int,q851 int,q852 int,q901 int,q902 int,q903 int,q904 int,q905 int,q906 int,q907 int,q908 int,q909 int,q910 int,q911 int,q912 int,calorie int,protein DOUBLE,lipid DOUBLE,carbohydrate DOUBLE,calcium DOUBLE,iron DOUBLE,zinc DOUBLE,magnesium DOUBLE,folic_acid DOUBLE,vitamin_a DOUBLE,vitamin_d DOUBLE,vitamin_e DOUBLE,vitamin_k DOUBLE,vitamin_b1 DOUBLE,vitamin_b2 DOUBLE,vitamin_c DOUBLE,dietary_fiber DOUBLE,age int,primary key(sno));
<?php
$day = $_GET['day'];
$hour = $_GET['hour'];
$min = $_GET['min'];
$tag = $_GET['tag'];
$place = $_GET['place'];
$meal = $_GET['meal'];
$eaten = $_GET['eaten'];
$q101 = $_GET["q101"];
$q102 = $_GET["q102"];
文字数制限の為省略、
echoで確認したところ値は取れていました。
$calorie = $_GET['calorie'];
$protein = $_GET['protein'];
$lipid = $_GET['lipid'];
$carbohydrate = $_GET['carbohydrate'];
$calcium = $_GET['calcium'];
$iron = $_GET['iron'];
$zinc = $_GET['zinc'];
$magnesium = $_GET['magnesium'];
$folic_acid = $_GET['folic_acid'];
$vitamin_a = $_GET['vitamin_a'];
$vitamin_d = $_GET['vitamin_d'];
$vitamin_e = $_GET['vitamin_e'];
$vitamin_k = $_GET['vitamin_k'];
$vitamin_b1 = $_GET['vitamin_b1'];
$vitamin_b2 = $_GET['vitamin_b2'];
$vitamin_c = $_GET['vitamin_c'];
$dietary_fiber = $_GET['dietary_fiber'];
$age = $_GET['age'];
//データベース接続時の例外処理
try{
//データベースへの接続、PDOインスタンスの生成
//第1引数は接続文字列、DBMS名、ホスト名とデータベース名を指定
//第2引数はユーザー名、第3引数はパスワード
$db = new PDO("mysql:);
print("<p>データベース「test」に接続しました</p>");
//SQL文の準備prepareメソッド、PDOStatmentオブジェクトを取得。$stoに代入
//SQL文としてINSERT文を準備
//値をセットするにはプレイスフォルダを使用する(SQLインジェクション対策)
//プレイスフォルダ名は「:」に続けて名前を設定
$sto=$db->prepare('INSERT INTO test(sno int auto_increment,day,hour,min,tag,place,meal,eaten,q101,q102,q103,q104,q105,q106,q107,q108,q109,q201,q202,q203,q204,q205,q206,q207,q208,q209,q210,q211,q212,q213,q214,q215,q301,q302,q303,q304,q305,q306,q307,q308,q309,q310,q311,q312,q313,q314,q315,q316,q317,q318,q319,q320,q321,q401,q402,q403,q404,q405,q406,q407,q408,q409,q410,q411,q412,q413,q414,q415,q416,q417,q418,q419,q420,q421,q422,q423,q424,q425,q426,q427,q428,q429,q430,q431,q432,q433,q434,q435,q436,q437,q438,q439,q501,q502,q503,q504,q505,q506,q507,q508,q509,q510,q511,q512,q513,q514,q515,q550,q551,q552,q553,q554,q555,q556,q557,q558,q601,q602,q603,q604,q605,q606,q651,q652,q653,q661,q662,q663,q664,q665,q666,q701,q702,q703,q704,q705,q706,q707,q708,q709,q710,q711,q712,q713,q714,q715,q716,q717,q718,q801,q802,q803,q804,q805,q806,q807,q808,q809,q810,q811,q812,q850,q851,q852,q901,q902,q903,q904,q905,q906,q907,q908,q909,q910,q911,q912,calorie,protein,lipid,carbohydrate,calcium,iron,zinc,magnesium,folic_acid,vitamin_a,vitamin_d,vitamin_e,vitamin_k,vitamin_b1,vitamin_b2,vitamin_c,dietary_fiber,age)values($day,$hour,$min,$tag,$place,$meal,$eaten,$q101,$q102,$q103,$q104,$q105,$q106,$q107,$q108,$q109,$q201,$q202,$q203,$q204,$q205,$q206,$q207,$q208,$q209,$q210,$q211,$q212,$q213,$q214,$q215,$q301,$q302,$q303,$q304,$q305,$q306,$q307,$q308,$q309,$q310,$q311,$q312,$q313,$q314,$q315,$q316,$q317,$q318,$q319,$q320,$q321,$q401,$q402,$q403,$q404,$q405,$q406,$q407,$q408,$q409,$q410,$q411,$q412,$q413,$q414,$q415,$q416,$q417,$q418,$q419,$q420,$q421,$q422,$q423,$q424,$q425,$q426,$q427,$q428,$q429,$q430,$q431,$q432,$q433,$q434,$q435,$q436,$q437,$q438,$q439,$q501,$q502,$q503,$q504,$q505,$q506,$q507,$q508,$q509,$q510,$q511,$q512,$q513,$q514,$q515,$q550,$q551,$q552,$q553,$q554,$q555,$q556,$q557,$q558,$q601,$q602,$q603,$q604,$q605,$q606,$q651,$q652,$q653,$q661,$q662,$q663,$q664,$q665,$q666,$q701,$q702,$q703,$q704,$q705,$q706,$q707,$q708,$q709,$q710,$q711,$q712,$q713,$q714,$q715,$q716,$q717,$q718,$q801,$q802,$q803,$q804,$q805,$q806,$q807,$q808,$q809,$q810,$q811,$q812,$q850,$q851,$q852,$q901,$q902,$q903,$q904,$q905,$q906,$q907,$q908,$q909,$q910,$q911,$q912,$calorie,$protein,$lipid,$carbohydrate,$calcium,$iron,$zinc,$magnesium,$folic_acid,$vitamin_a,$vitamin_d,$vitamin_e,$vitamin_k,$vitamin_b1,$vitamin_b2,$vitamin_c,$dietary_fiber,$age)');
//プレイスフォルダに値をセットするbindValueメソッド
//プレイスフォルダの数だけbindValueメソッドを実行する
//SQL文の実行を行うexecuteメソッド
//SQLが正常に実行できた場合はtrue、そうでない場合はfalseを返す
if($sto->execute()){
print("<p>情報を新規登録しました</p>");
}else{
print("<p>SQL文実行時にエラーが発生しました</p>");
}
//データベースの接続を閉じる
$db = null;
print("<p>データベースを切断しました</p>");
//PDOの例外処理
} catch (PDOException $e){
//中断関数die()
die("<h2>データベース接続に失敗しました</h2>");
}
?>
mysqlに直接insertした場合はday以外入力できました。
INSERT INTO test(day,hour,min,tag,place,meal,eaten,q101,q102,q103,q104,q105,q106,q107,q108,q109,q201,q202,q203,q204,q205,q206,q207,q208,q209,q210,q211,q212,q213,q214,q215,q301,q302,q303,q304,q305,q306,q307,q308,q309,q310,q311,q312,q313,q314,q315,q316,q317,q318,q319,q320,q321,q401,q402,q403,q404,q405,q406,q407,q408,q409,q410,q411,q412,q413,q414,q415,q416,q417,q418,q419,q420,q421,q422,q423,q424,q425,q426,q427,q428,q429,q430,q431,q432,q433,q434,q435,q436,q437,q438,q439,q501,q502,q503,q504,q505,q506,q507,q508,q509,q510,q511,q512,q513,q514,q515,q550,q551,q552,q553,q554,q555,q556,q557,q558,q601,q602,q603,q604,q605,q606,q651,q652,q653,q661,q662,q663,q664,q665,q666,q701,q702,q703,q704,q705,q706,q707,q708,q709,q710,q711,q712,q713,q714,q715,q716,q717,q718,q801,q802,q803,q804,q805,q806,q807,q808,q809,q810,q811,q812,q850,q851,q852,q901,q902,q903,q904,q905,q906,q907,q908,q909,q910,q911,q912,calorie,protein,lipid,carbohydrate,calcium,iron,zinc,magnesium,folic_acid,vitamin_a,vitamin_d,vitamin_e,vitamin_k,vitamin_b1,vitamin_b2,vitamin_c,dietary_fiber,age)values(2019-06-30,6,10,2,1,1,1,0,0,0,0,0,0,0,108,0,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,651,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,828,31.6,39.7,80.4,63,3.4,4.1,45.7,56,150,2.3,1.4,14,0.32,0.58,10,0.5,9);