• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Web上(php)からmysqlにデータを挿入する)

Web上からmysqlにデータを挿入する方法

このQ&Aのポイント
  • Web上からmysqlにデータを挿入する方法をご教授いただけませんか?
  • データ収集システムを開発していて、Web上からmysqlにデータを挿入する方法がわかりません。具体的な手順を教えてください。
  • mysqlにデータを挿入するためのコードや手順について教えてください。Web上のフォームからデータを受け取り、データベースに保存したいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

何か、テーブル設計がよくわからないのですが、 学生の個人情報部分は置いておいて、それ以降の設問のフィールドですが、これは例えば q01からq31 といったフィールドにして、 それぞれのフィールドには、「A~F」までのいずれかの値が含まれる、という設計では問題があるのでしょうか。 普通は(他の人がどうやっているか私もよくわかりませんが) 上記のようにして、フォームには、 <input type="radio" name="q01" value="A" />A<br /> <input type="radio" name="q01" value="B" />B<br /> <input type="radio" name="q01" value="C" />C<br /> <input type="radio" name="q01" value="D" />D<br /> <input type="radio" name="q01" value="E" />E<br /> <input type="radio" name="q01" value="F" />F<br /> などとして、(radioは同一名のname値を複数書いてもクリックされたもののみPOSTされるから) 値を得るようにします。 そして本題の、設問数よりもフィールド数が多い場合に関してですが、 プログラムの全容がわからないのでなんとも言えないですが、 if文で振り分けた「分類」によっては、設問によってはPOSTもされてこない、ということであれば、 ちょいちょい工夫が必要、ですかね・・・ <?php $db = mysql_connect("localhost", "aiueo","##aiueo"); //データベースへ接続 mysql_select_db("aiueo", $db);//データベースを選択 //フィールド名として使っているものを先に定義しておく $define_fields = array( 'nendo', 'gakunen', 'class', 'kamokumei', 'kamokucode', 'kind', 'people', 'q01', //面倒なので省略しますが、q01~q32です。 //ちなみに、1A~31Fというフィールド名でするならソレを全部書く 'q32', ); //POSTされた値を別の変数に挿入 //また、その際にエスケープとクオート処理もする $insert = array(); foreach($define_fields as $field_name){ if(isset($_POST[$field_name])){ $insert[$field_name] = "'" . mysql_real_escape_string($_POST[$field_name], $db) . "'"; } } //SQLを構築する $sql = "INSERT INTO `data` ("; $sql.= "`" . implode("`,`", array_keys($insert)) . "`"; $sql.= ") VALUES ("; $sql.= implode(",", array_values($insert)); $sql.= ")"; mysql_query($sql, $db); ?> とかやると、実際に値の記述をするところが少なくなるので、多少楽出来ます。 ※ただ、不正な値が含まれているかどうかのチェックはここには記述していないので、どこかで値のチェックは必ずしてください。 また、フィールド定義をするときには、設問のフィールドは、NULLを許可するようにしないと、SQLがエラーになります。

y_okamoto_2918
質問者

お礼

ありがとうございます!!!!! おかげ様でデータ登録ができました!!!!