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

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

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

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

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

PHP

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

Q&A

解決済

1回答

2521閲覧

フォームからのデータがデータベースに登録されませせん

bigin

総合スコア67

Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

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

PHP

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

0グッド

0クリップ

投稿2017/08/06 14:01

編集2017/08/08 14:15

cloud9を使っています。
Macです。

フォームからの入力情報がデータベースに接続されません。

以下ご確認の上アドバイスいただけますと幸いです。

form.php

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>フェスタ入力フォーム</title> <link href="css/bootstrap.min.css" rel="stylesheet"> <link rel="stylesheet" type="text/css" href="form.css" > <script src="js/bootstrap.min.js"></script> </head> <body> <form action="registration.php" method="post" name="sample" class="form" align="left"> <div class="form-group"> アイテムID <input type="text" name="item" placeholder="01~99" class="form-control" required maxlength="2"> </div> <div class="form-group"> データフラグ <select name="dataflag" required> <option value="1">ENTRY</option> <option value="2">PICKUP情報</option> </select> </div> <div class="form-group"> ステータス <select name="status" required> <option value="1">1.募集中</option> <option value="2">2.募集終了</option> <option value="3">3.coming soon</option> <option value="4">4.非表示</option> </select> </div> <div class="form-group"> 画像ファイル名 <input type="text" name="gazou" placeholder="半角英数、jpg/pngのみ" required> </div> <div class="form-group"> カテゴリー <select name="category" required> <option value="1">1.撮影会</option> <option value="2">2.ワークショップ</option> <option value="3">3.ステージ</option> <option value="1">4.セミナー</option> <option value="2">5.施設</option> <option value="3">6.その他</option> </select> </div> <div class="form-group"> タイトル <input type="text" name="title" placeholder="全角36文字以内" class="form-control" required maxlength="36"> </div> <div class="form-group"> 出演者 <input type="text" name="performer" class="form-control"> </div> <div class="form-group"> 出演者URL <input type="url" name="performerurl" value="" class="form-control"> </div> <div class="form-group"> 日時 ① <input type="datetime-local" name="date1" value="2017-09-19T10:00"> <input type="time" name="date2" value="10:00"> <br> 日時 ② <input type="datetime-local" name="date3" value="2017-09-19T10:00"> <input type="time" name="date4" value="10:00"> </div> <div class="form-group"> 場所 <input type="text" name="place" class="form-control"> </div> <div class="form-group"> 参加費 <select name="fee" required> <option value="1">無料</option> <option value="2">300円</option> <option value="3">500円</option> <option value="1">1,000円</option> <option value="2">1,500円</option> <option value="3">3,000円</option> </select> </div> <div class="form-group"> 参加費補足 <textarea rows="3" cols="40" name="fees" class="form-control"></textarea> </div> <div class="form-group"> 募集人数 <input type="text" name="recruit" class="form-control"> </div> <div class="form-group"> 応募条件 <input type="text" name="appcondition" class="form-control"> </div> <div class="form-group"> 応募締め切り <input type="datetime-local" name="deadline" value="2017-09-19T10:00"> </div> <div class="form-group"> 当選発表 <input type="datetime-local" name="announce" value="2017-09-19T10:00"> </div> <div class="form-group"> 備考 <textarea rows="3" name="remark" cols="40" class="form-control"></textarea> </div> <div class="form-group"> 注意事項 <textarea rows="3" name="attention" cols="40" class="form-control"></textarea> </div> <div class="form-group"> 応募者URL <input type="url" name="appurl" value="" class="form-control"> </div> <div class="form-group"> <button type="submit" class="btn btn-default registration">登録</button> </div> </form> </body> </html>

registration.php

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>アドレス登録</title> </head> <body> <?php echo "テスト"; try{ $db = new PDO('mysql:host=localhost;dbname=2017_t_autumn;charset=utf8','root',''); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); $ftt=$db->prepare('INSERT INTO tokyo(item,flag,status,gazou,category,title,performer,performerurl,date1,date2,date3,date4,place,fee,fees,recruit,appcondition,deadline,announce,remark,attention,appurl) VALUES(:item,:flag,:status,:gazou,:category,:title,:performer,:performerurl,:date1,:date2,:date3,:date4,:place,:fee,:fees,:recruit,:appcondition,:deadline,:announce,:remark,:attention,:appurl)'); $ftt->bindValue(':item',$_POST['item']); $ftt->bindValue(':flag',$_POST['flag']); $ftt->bindValue(':status',$_POST['status']); $ftt->bindValue(':gazou',$_POST['gazou']); $ftt->bindValue(':category',$_POST['category']); $ftt->bindValue(':title',$_POST['title']); $ftt->bindValue(':performer',$_POST['performer']); $ftt->bindValue(':performerurl',$_POST['performerurl']); $ftt->bindValue(':date1',$_POST['date1']); $ftt->bindValue(':date2',$_POST['date2']); $ftt->bindValue(':date3',$_POST['date3']); $ftt->bindValue(':date4',$_POST['date4']); $ftt->bindValue(':place',$_POST['place']); $ftt->bindValue(':fee',$_POST['fee']); $ftt->bindValue(':fees',$_POST['fees']); $ftt->bindValue(':recruit',$_POST['recruit']); $ftt->bindValue(':appcondition',$_POST['appcondition']); $ftt->bindValue(':deadline',$_POST['deadline']); $ftt->bindValue(':announce',$_POST['announce']); $ftt->bindValue(':remark',$_POST['remark']); $ftt->bindValue(':attention',$_POST['attention']); $ftt->bindValue(':appurl',$_POST['appurl']); $ftt->execute(); $db = NULL; echo "テスト"; }catch(PDOException $e){ die('エラーメッセージ:'.$e->getMessage()); } ?> <p>登録が完了しました。<br /><a href='form.php'>戻る</a></p> </body> </html>

なお、フォーム送信後は「登録が完了しました。」のみ表示されます。
なので、データベースには接続していると思うのですが、、、

よろしくお願いいたします。

追記:
PDOのエラー処理コードを追加してやってみました。→PDO::ERRMODE_WARNING
すると、以下のエラーが出ました。

Warning: PDOStatement::execute(): SQLSTATE[42S22]: Column not found: 1054 Unknown column 'flag' in 'field list' in /home/ubuntu/workspace/bootstrap-3.3.7-dist/registration.php on line 33

でも、flagに問題は見当たらないのですが、、、なお,DESCRIBE tokyoの結果は以下の通りです。

+-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | item | int(11) | YES | | NULL | | +-------+---------+------+-----+---------+-------+ 1 row in set (0.00 sec)

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

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

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

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

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

ahodana

2017/08/06 21:56

DESC tokyo の mysql 実行結果を質問を編集してあげてくださいな
bigin

2017/08/07 02:40

ORDER BY "フィールド名" DESC;  ということですか?すみません、まだtokyoテーブルの中に何も入れてなく、、、
bigin

2017/08/07 13:52 編集

ありがとうございます。本文に追記します。
guest

回答1

0

ベストアンサー

mysqlではconditionが予約語らしいので``で括ってあげると良い様です。他項目も揃えた方がよろしいかと。

INSERT INTO tokyo(....`condition`,....)

もし再定義されるのであれば下記の様なテーブルになります。
テーブル名がtokyoなので他にテーブルが在るような気もします。

sql

1drop table if exists tokyo; 2create table tokyo( 3item int 4,flag int 5,status int 6,gazou text 7,category int 8,title text 9,performer text 10,performerurl text 11,date1 date 12,date2 date 13,place text 14,fee int 15,fees text 16,recruit int 17,`condition` text 18,deadlIne date 19,announce date 20,remark text 21,attention text 22,appurl text);
mysql> desc tokyo; +--------------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------+---------+------+-----+---------+-------+ | item | int(11) | YES | | NULL | | | flag | int(11) | YES | | NULL | | | status | int(11) | YES | | NULL | | | gazou | text | YES | | NULL | | | category | int(11) | YES | | NULL | | | title | text | YES | | NULL | | | performer | text | YES | | NULL | | | performerurl | text | YES | | NULL | | | date1 | date | YES | | NULL | | | date2 | date | YES | | NULL | | | place | text | YES | | NULL | | | fee | int(11) | YES | | NULL | | | fees | text | YES | | NULL | | | recruit | int(11) | YES | | NULL | | | condition | text | YES | | NULL | | | deadlIne | date | YES | | NULL | | | announce | date | YES | | NULL | | | remark | text | YES | | NULL | | | attention | text | YES | | NULL | | | appurl | text | YES | | NULL | | +--------------+---------+------+-----+---------+-------+ 20 rows in set (0.00 sec)

投稿2017/08/06 14:40

編集2017/08/08 12:43
A.Ichi

総合スコア4070

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

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

bigin

2017/08/06 15:12

ありがとうございます。予約語だとは考えておらず、助かりました。 ただ、condition以外で名前を変更しましたが、、、他に原因があるようですね。
A.Ichi

2017/08/06 22:07

postの中に値が無いものがあるかもしれません。postに値を全部設定した場合登録はできました。他に有るとしたら接続の部分でしょうか。
A.Ichi

2017/08/07 01:15

後は、此処が違っていませんでしょうか? $ftt->bindValue(':item',$_POST['title']);
bigin

2017/08/07 01:54

postの中に値が無いものがあるかもしれません。postに値を全部設定した場合登録はできました。他に有るとしたら接続の部分でしょうか。 →ありがとうございます。一部設定できていませんでした。設定するとエラー内容が変わりました。Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in /home/ubuntu/workspace/bootstrap-3.3.7-dist/registration.php on line 35 Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number in /home/ubuntu/workspace/bootstrap-3.3.7-dist/registration.php on line 35 35行目→$ftt->execute();
bigin

2017/08/07 01:59

後は、此処が違っていませんでしょうか? $ftt->bindValue(':item',$_POST['title']); →現状、$ftt->bindValue(':item',$_POST['item']);となっていますが、、、間違っていますかね???
A.Ichi

2017/08/07 02:16

直してあれば問題ありません。掲載のPGを見ていたもので。 ご提示のエラーメッセージからすると、置き換えの数が合っていない様に見えます。:xxx が無いか違っているか?
bigin

2017/08/07 02:41

失礼しました。ありがとうございます。置き換えの数とは、何を意味するのでしょうか?
A.Ichi

2017/08/07 02:51

すみませんexecute()のエラーですね。insert into tokyo(...)values(...)の双方の括弧の中の個数が異なっているのではないでしょうか?
bigin

2017/08/07 03:15

確認しましたが、数と項目は合っています。カンマもれもないか確認しましたが、、、
A.Ichi

2017/08/07 03:28 編集

insert into tokyo values(...)の括弧の中の個数と$ftt->bindValue()が一致していないのでは無いでしょうか?bindを削ったら同じ様なエラーがでました。tokenの個数なので定義の数かな?
bigin

2017/08/07 03:29

おっしゃる通り、変更した項目が合っていませんでした。 エラー内容が変わりました。 Warning: PDOStatement::execute(): SQLSTATE[42S22]: Column not found: 1054 Unknown column 'flag' in 'field list' in /home/ubuntu/workspace/bootstrap-3.3.7-dist/registration.php on line 35 なぜか、flagが突っ込まれます。。。
A.Ichi

2017/08/07 04:14

falgの属性は、なんでしょうか?char、int、まさかのboolean。
bigin

2017/08/07 04:31

属性は何も設定していません。
A.Ichi

2017/08/07 05:07 編集

テーブル tokyoの定義はありますか? または「desc tokyo;」が実行できるmysqlへの接続は可能でしょうか? 聞き方が良くないので、変更。 エラーの原因がテーブル項目への値の代入の際の型違いによるかもしれないと思いお聞きしています。
bigin

2017/08/07 05:22

定義はありません。 desc tokyoの接続もできませんでした。
A.Ichi

2017/08/07 05:51 編集

なるほど、それではお時間がある時で構いませんので下記のパターンでテストをお願いできますでしょうか? ケース1 $ftt->bindValue(':flag',$_POST['flag'], PDO::PARAM_STR); ケース2 $ftt->bindValue(':flag',$_POST['flag'], PDO::PARAM_INT); ケース3 $ftt->bindValue(':flag',(int) $_POST['flag'], PDO::PARAM_INT);
bigin

2017/08/07 08:16

ご丁寧にありがとうございます。また、実装して連絡させてください。
bigin

2017/08/07 14:24 編集

やってみました。ケース2だけエラー内容が異なりました。 ケース1 Warning: PDOStatement::execute(): SQLSTATE[42S22]: Column not found: 1054 Unknown column 'flag' in 'field list' in /home/ubuntu/workspace/bootstrap-3.3.7-dist/registration.php on line 35 ケース2 Catchable fatal error: Object of class PDOStatement could not be converted to string in /home/ubuntu/workspace/bootstrap-3.3.7-dist/registration.php on line 14 line14→ $ftt->bindValue(':flag',(int) $_POST['flag'], PDO::PARAM_INT); ケース3 Warning: PDOStatement::execute(): SQLSTATE[42S22]: Column not found: 1054 Unknown column 'flag' in 'field list' in /home/ubuntu/workspace/bootstrap-3.3.7-dist/registration.php on line 35
A.Ichi

2017/08/07 23:30 編集

DESCRIBE tokyoを行って頂いたのですね、気づきませんでした。tokyoテーブルには項目「item」しかないのでflag以降がエラーとなります。たぶんテーブルが違うか?再定義が必要だと思います。
bigin

2017/08/08 12:22

ありがとうございます。DESCRIBE やれました。失礼しました。 そもそもなんですが、テーブルの項目が空でなければフォームからデータベースに値は入れられないのですか?
A.Ichi

2017/08/08 12:30 編集

デーブルに項目を予め定義していないとINSERTでエラーになります。今はテーブルtokyoには項目itemのみが定義れています。INSERT文で書かれても項目の追加とデータの可能はされません。(されたら良いと思いますが) 新たにテーブルを定義されてはどうでしょうか?サンプルですが添付しました。
bigin

2017/08/08 12:34

ありがとうございます!!!見させていただきましたが、itemだけ入っているtokyoテーブルを削除して新規で作った方が良いということでしょうか?
A.Ichi

2017/08/08 12:41

もしデータが入っていて、残して起きたい場合は、項目追加を行えます。 いっそのこと新たに別名のテーブルを作成されてはいかがでしょうか?
bigin

2017/08/08 12:59

別名のテーブルにしました。ターミナルではうまく入りました。 ただ、エラーがまた下記の通りでました。。。 Warning: PDOStatement::execute(): SQLSTATE[42S22]: Column not found: 1054 Unknown column 'flag' in 'field list' in /home/ubuntu/workspace/bootstrap-3.3.7-dist/registration.php on line 35 テーブル名は変更したので、 $ftt=$db->prepare('INSERT INTO tokyo(item, →tokyoの部分だけ新しいテーブル名には修正しました。 どうしてでしょう、、、、今度こそいったと思ったのですが、、、新しいテーブル名にしたことで他にも変える箇所がないか見てみます。
A.Ichi

2017/08/08 13:04

新たなテーブルはdesc xxxxされたとき、flagが表示されますでしょか?
bigin

2017/08/08 13:10

されていますね。間違いなく。以下の通りです。 mysql> DESCRIBE event; +--------------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------+---------+------+-----+---------+-------+ | item | int(11) | YES | | NULL | | | flag | text | YES | | NULL | | | status | int(11) | YES | | NULL | | | gazou | text | YES | | NULL | | | category | int(11) | YES | | NULL | | | title | text | YES | | NULL | | | performer | text | YES | | NULL | | | performerurl | text | YES | | NULL | | | date1 | date | YES | | NULL | | | date2 | date | YES | | NULL | | | date3 | date | YES | | NULL | | | date4 | date | YES | | NULL | | | place | text | YES | | NULL | | | fee | int(11) | YES | | NULL | | | fees | text | YES | | NULL | | | recruit | int(11) | YES | | NULL | | | appcondition | text | YES | | NULL | | | deadlIne | date | YES | | NULL | | | announce | date | YES | | NULL | | | remark | text | YES | | NULL | | | attention | text | YES | | NULL | | | appurl | text | YES | | NULL | | +--------------+---------+------+-----+---------+-------+ 22 rows in set (0.00 sec)
A.Ichi

2017/08/08 13:21

確かにに出来ております。大変申し訳ないのですが、flagは予約語では有りませんが、別名に変えてトライして頂けないでしょうか? 一応、自サーバではINSERTがされていますのでversionの違い?かもしれません???
bigin

2017/08/08 13:53 編集

やってみました。すると、エラーは変わらないですね。すでにflagはないはずなのに、flagのこといってきますね。ちなみに、「dataflag」にしました。 Warning: PDOStatement::execute(): SQLSTATE[42S22]: Column not found: 1054 Unknown column 'flag' in 'field list' in /home/ubuntu/workspace/bootstrap-3.3.7-dist/registration.php on line 35
A.Ichi

2017/08/08 14:04

phpソースが古いものが起動されている可能性が有ります。どこかに echo ”test”;の行をいれるとブラウザ上に変化が出ると思います。またエラー35ラインから変る事で確認できます。
bigin

2017/08/08 14:09

入れてみました。下記の通りです。 テスト Warning: PDOStatement::execute(): SQLSTATE[42S22]: Column not found: 1054 Unknown column 'flag' in 'field list' in /home/ubuntu/workspace/bootstrap-3.3.7-dist/registration.php on line 36 テスト
A.Ichi

2017/08/08 14:12

よろしければ現在のPHPソースを上記に掲載して頂けると良いですが。
bigin

2017/08/08 14:16

失礼しました。最初の質問ないのコードを修正しました。 ご確認ください。
A.Ichi

2017/08/08 14:28 編集

早速ありがとうございます。でもテーブル名はtokyoですし項目名もflagのままですが新しい項目名dataflagではありませんが・・・
bigin

2017/08/08 14:31

大変失礼しました。保存できていないだけでしたm(._.)m 改めてやってみると、データを入れることができました!!! ここまでお付き合いいただき、本当に感謝いたしますm(._.)m でも、どうしてflag->dataflagに変えることでうまくいったのでしょう?
A.Ichi

2017/08/08 14:39

もしかしたらどこかで手順が間違っていてflagとtokyoのどちらかが修正されていない状況に有ったかもしれません。お時間が有ればflagで再挑戦してみてはどうでしょうか?
bigin

2017/08/08 14:45

そうかもしれないですね。本当にご丁寧なご指導ありがとうございました。また、今後もご指導のほどよろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問