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

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

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

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

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

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

Q&A

解決済

3回答

2834閲覧

PHP とMYSQLで企業情報の登録するやり方

rura

総合スコア70

MySQL

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

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

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

0グッド

0クリップ

投稿2016/09/13 10:05

###前提・実現したいこと
皆様こんちわphp初心者です。HTMLで作ったフォームからPHPとMYSQLで企業情報を登録する物を作ってますが、
この先、どのようにDBに反映できるようにしていけば良いでしょうか?
お詳しい方よろしくお願いします。

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

$dsn = 'mysql:dbname=mfdb;host=localhost'; $user = 'root'; $password = ''; try{ $db = new PDO($dsn, $user, $password); print('<br>'); if ($db == null){ print('接続に失敗しました。<br>'); } $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $stmt = $db->prepare("INSERT INTO office(companyoffice, cmpNum1, cmpname1, cmpname2, mssa1, mssa2, mssapass, mssaemail, mssatel1, mssafax1, mssazip, mssaprefecture, MssaAddress, sjs) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); $stmt->bindParam(':companyoffice', $companyoffice, PDO::PARAM_STR); $stmt->execute(); $stmt->bindParam(':cmpNum1', $cmpNum1, PDO::PARAM_INT); $stmt->execute(); $stmt->bindParam(':cmpname1', $cmpname1, PDO::PARAM_STR); $stmt->execute(); $stmt->bindParam(':cmpname2', $cmpname2, PDO::PARAM_STR); $stmt->execute(); $stmt->bindParam(':mssa1', $mssa1, PDO::PARAM_STR); $stmt->execute(); $stmt->bindParam(':mssa2', $mssa2, PDO::PARAM_STR); $stmt->execute(); $stmt->bindParam(':mssapass', $mssapass, PDO::PARAM_STR); $stmt->execute(); $stmt->bindParam(':mssaemail', $mssaemail, PDO::PARAM_STR); $stmt->execute(); $stmt->bindParam(':mssatel1', $mssatel1, PDO::PARAM_STR); $stmt->execute(); $stmt->bindParam(':mssafax1', $mssafax1, PDO::PARAM_STR); $stmt->execute(); $stmt->bindParam(':mssazip', $mssazip, PDO::PARAM_STR); $stmt->execute(); $stmt->bindParam(':mssaprefecture', $mssaprefecture, PDO::PARAM_STR); $stmt->execute(); $stmt->bindParam(':MssaAddress', $MssaAddress, PDO::PARAM_STR); $stmt->execute(); $stmt->bindParam(':sjs', $sjs, PDO::PARAM_STR); $stmt->execute(); if ($_SERVER['REQUEST_METHOD'] == 'POST'){ if(empty($_POST["companyoffice"])){ echo "事業者及びその事業所を入力してください"; exit; } $companyoffice= htmlspecialchars($_POST["companyoffice"],ENT_QUOTES,"UTF-8"); $_SESSION["companyoffice"] = $companyoffice; if(empty($_POST["cmpNum1"])){ echo "事業者代表名(フリガナ)を入力してください"; exit; } $cmpNum1= htmlspecialchars($_POST["cmpNum1"],ENT_QUOTES,"UTF-8"); $_SESSION["cmpNum1"] = $cmpNum1; if(empty($_POST["cmpname1"])){ echo "事業者代表名を入力してください"; exit; } $cmpname1= htmlspecialchars($_POST["cmpname1"],ENT_QUOTES,"UTF-8"); $_SESSION["cmpname1"] = $cmpname1; if(empty($_POST["cmpname2"])){ echo "事業者代表名(フリガナ)を入力してください"; exit; } $cmpname2= htmlspecialchars($_POST["cmpname2"],ENT_QUOTES,"UTF-8"); $_SESSION["cmpname2"] = $cmpname2; if(empty($_POST["mssa1"])){ echo "本店システム管理者を入力してください"; exit; } $mssa1= htmlspecialchars($_POST["mssa1"],ENT_QUOTES,"UTF-8"); $_SESSION["mssa1"] = $mssa1; if(empty($_POST["mssa2"])){ echo "本店システム管理者(フリガナ)を入力してください"; exit; } $mssa2= htmlspecialchars($_POST["mssa2"],ENT_QUOTES,"UTF-8"); $_SESSION["mssa2"] = $mssa2; if(empty($_POST["mssapass"])){ echo "本店管理者用パスワードを入力してください"; exit; } $mssapass= htmlspecialchars($_POST["mssapass"],ENT_QUOTES,"UTF-8"); $_SESSION["mssapass"] = $mssapass; if(empty($_POST["mssaemail"])){ echo "本店メールアドレスを入力してください"; exit; } $mssaemail= htmlspecialchars($_POST["mssaemail"],ENT_QUOTES,"UTF-8"); $_SESSION["mssaemail"] = $mssaemail; if(empty($_POST["mssatel1"])){ echo "本店電話番号の左を入力してください"; exit; } $mssatel1= htmlspecialchars($_POST["mssatel1"],ENT_QUOTES,"UTF-8"); $_SESSION["mssatel1"] = $mssatel1; //本店FAX番号 if(empty($_POST["mssafax1"])){ echo "本店FAX番号の左を入力してください"; exit; } $mssafax1= htmlspecialchars($_POST["mssafax1"],ENT_QUOTES,"UTF-8"); $_SESSION["mssafax1"] = $mssafax1; //本店郵便番号 if(empty($_POST["mssazip"])){ echo "本店郵便番号を入力してください"; exit; } $mssazip= htmlspecialchars($_POST["mssazip"],ENT_QUOTES,"UTF-8"); $_SESSION["mssazip"] = $mssazip; //本店都道府県 $mssaprefecture= htmlspecialchars($_POST["mssaprefecture"],ENT_QUOTES,"UTF-8"); if(empty($mssaprefecture)){ echo "本店都道府県を入力してください"; exit; } $_SESSION["mssaprefecture"] = $mssaprefecture; if(empty($_POST["MssaAddress"])){ echo "本店住所を入力してください"; exit; } $MssaAddress= htmlspecialchars($_POST["MssaAddress"],ENT_QUOTES,"UTF-8"); $_SESSION["MssaAddress"] = $MssaAddress; if(empty($_POST["Mssabill"])){ echo "本店所在ビルを入力してください"; exit; } $Mssabill= htmlspecialchars($_POST["Mssabill"],ENT_QUOTES,"UTF-8"); $_SESSION["Mssabill"] = $mssazip; if(empty($_POST["sjs"])){ echo "就労支援種目を入力してください"; exit; } $sjs= htmlspecialchars($_POST["sjs"],ENT_QUOTES,"UTF-8"); $_SESSION["sjs"] = $sjs; }else { echo "<h3>下記内容をご記入とご確認の上で会員登録を押してください。</h3>"; } }catch (PDOException $e){ echo $e->getMessage(); exit; } $db = null; ?> </div> <form method="post" action="company.php" class="contact"> <table> <caption>事業者登録票</caption> <tbody> <tr> <th><label for="section">事業者及びその事業所</label></th> <td class="required" ><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> <td colspan="10"><input type="text" name="companyoffice" value=""></td> </tr> <tr> <th><label for="section">事業者番号 </label></th> <td class="required" ><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> <td><input type="number" name="cmpNum1" size="10" maxlength="30" value=""></td> </tr> <tr> <th><label for="section">事業者代表名</label></th> <td class="required" ><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> <td colspan="10"><input type="text" name="cmpname1" size="10" maxlength="30" value=""></td> </tr> <tr> <th><label for="section">事業者代表名 <span class="supplement">(フリガナ)</span></label></th> <td class="required"><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> <td colspan="10"><input type="text" name="cmpname2" size="10" maxlength="30" value=""></td> </tr> <tr> <th><label for="section">本店システム管理者</label></th> <td class="required" ><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> <td colspan="10"><input type="text" name="mssa1" size="10" maxlength="30" value=""></td> </tr> <tr> <th><label for="section">本店システム管理者<br><span class="supplement">(フリガナ)</span></label></th> <td class="required"><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> <td colspan="10"><input type="text" name="mssa2" size="10" maxlength="30" value=""></td> </tr> <tr> <th><label for="email">本店管理者用<br>パスワード</label></th> <td class="required"><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> <td colspan="10"><input type="password" name="mssapass" size="30" maxlength="30"><br> <span class="supplement">ご入力間違いのないようにご注意ください</span></td> </tr> <tr> <th><label for="email">本店メールアドレス</label></th> <td class="required"><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> <td colspan="10"><input type="email" name="mssaemail" size="30" maxlength="50"><br> <span class="supplement">ご入力間違いのないようにご注意ください</span></td> </tr> <tr> <th><label for="tel1">本店電話番号</label></th> <td class="required" ><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> <td colspan="10"><input type="tel" name="mssatel1" size="15" maxlength="15"></td> </tr> <tr> <th><label for="fax1">本店FAX番号</label></th> <td class="required" ><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> <td colspan="10"><input type="text" name="mssafax1" size="15" maxlength="15"></td> </tr> <tr> <th rowspan="3"><label for="zip1">本店住所</label></th> <td class="required" ><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> <td colspan="10"><label for="zip1">〒</label> <input type="number" name="mssazip" size="5" maxlength="10" value=""></td> </tr> <tr> <td class="required"><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> <td colspan="10"><input type="address" name="mssaprefecture" size="40" maxlength="20"></td> </tr> <tr> <td class="required" ><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> <td colspan="10"><input type="address" name="MssaAddress" size="40" maxlength="20"></td> </tr> <tr> <th><label for="company">就労支援種目</label></th> <td class="required" ><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> <td colspan="10"><input type="checkbox" name="sjs" value="A:雇用型" checked>A:雇用型 <input type="checkbox" name="sjs" value="B:非雇用型">B:非雇用型 <input type="checkbox" name="sjs" value="C:就労移行支援">C:就労移行支援</td> </tr> <tr> </table> <a href="company.php?action=rewrite">&laquo;&nbsp;書き直す</a> <p class="button"><input type="submit" value="登録"></p> </form>

###試したこと
課題に対してアプローチしたことを記載してください

###補足情報(言語/FW/ツール等のバージョンなど)
php5、MYSQL
より詳細な情報

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

SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens

###該当のソースコード

ここにご自身が実行したソースコードを書いてください

###試したこと
課題に対してアプローチしたことを記載してください

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

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

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

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

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

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

guest

回答3

0

ツッコミどころが多すぎますので、
こちらの質問に対する、私の回答を参考にソースコードを修正してみてください。

https://teratail.com/questions/47720

あと、execute した後で、入力値をチェックしても意味がありません。
プログラムは上から順番に実行されます。


あと変数名などの命名に規則性がなく、とても作業に 雑さ が目立ちます。無駄にミスを誘引するので気をつけましょう。

例えば、 何を意味するプリフィックスかは知りませんが、mssa-Mssa- 使い分けに意味がないなら統一すべきでしょう。


php

1<?php 2ini_set('display_errors', 1); 3error_reporting(E_ALL); 4 5$dsn = 'mysql:dbname=mfdb;host=localhost'; 6$user = 'root'; 7$password = ''; 8 9try { 10 11 if (filter_input_array(INPUT_POST)) { 12 13 $companyoffice = filter_input(INPUT_POST, 'companyoffice'); 14 $cmpNum1 = filter_input(INPUT_POST, 'cmpNum1'); 15 $cmpname1 = filter_input(INPUT_POST, 'cmpname1'); 16 $cmpname2 = filter_input(INPUT_POST, 'cmpname2'); 17 $mssa1 = filter_input(INPUT_POST, 'mssa1'); 18 $mssa2 = filter_input(INPUT_POST, 'mssa2'); 19 $mssapass = filter_input(INPUT_POST, 'mssapass'); 20 $mssaemail = filter_input(INPUT_POST, 'mssaemail'); 21 $mssatel1 = filter_input(INPUT_POST, 'mssatel1'); 22 $mssafax1 = filter_input(INPUT_POST, 'mssafax1'); 23 $mssazip = filter_input(INPUT_POST, 'mssazip'); 24 $mssaprefecture = filter_input(INPUT_POST, 'mssaprefecture'); 25 $MssaAddress = filter_input(INPUT_POST, 'MssaAddress'); 26 $Mssabill = filter_input(INPUT_POST, 'Mssabill'); 27 $sjs = filter_input(INPUT_POST, 'sjs'); 28 29 $err = array(); 30 31 if (empty($companyoffice)) { 32 $err['companyoffice'] = "事業者及びその事業所を入力してください"; 33 } 34 if (empty($cmpNum1)) { 35 $err['cmpNum1'] = "事業者代表名(フリガナ)を入力してください"; 36 } 37 if (empty($cmpname1)) { 38 $err['cmpname1'] = "事業者代表名を入力してください"; 39 } 40 if (empty($cmpname2)) { 41 $err['cmpname2'] = "事業者代表名(フリガナ)を入力してください"; 42 } 43 if (empty($mssa1)) { 44 $err['mssa1'] = "本店システム管理者を入力してください"; 45 } 46 if (empty($mssa2)) { 47 $err['mssa2'] = "本店システム管理者(フリガナ)を入力してください"; 48 } 49 if (empty($mssapass)) { 50 $err['mssapass'] = "本店管理者用パスワードを入力してください"; 51 } 52 if (empty($mssaemail)) { 53 $err['mssaemail'] = "本店メールアドレスを入力してください"; 54 } 55 if (empty($mssatel1)) { 56 $err['mssatel1'] = "本店電話番号の左を入力してください"; 57 } 58 if (empty($mssafax1)) { 59 $err['mssafax1'] = "本店FAX番号の左を入力してください"; 60 } 61 if (empty($mssazip)) { 62 $err['mssazip'] = "本店郵便番号を入力してください"; 63 } 64 if (empty($mssaprefecture)) { 65 $err['mssaprefecture'] = "本店都道府県を入力してください"; 66 } 67 if (empty($MssaAddress)) { 68 $err['MssaAddress'] = "本店住所を入力してください"; 69 } 70 71 // どこで使うおつもり? 72 if (empty($Mssabill)) { 73 $err['Mssabill'] = "本店所在ビルを入力してください"; 74 } 75 if (empty($sjs)) { 76 $err['sjs'] = "就労支援種目を入力してください"; 77 } 78 79 // エラーの数を数えて、エラーがなければインサート 80 if (0 == count($err)) { 81 82 $db = new PDO($dsn, $user, $password 83 , array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION) 84 ); 85 86 $sql = "INSERT INTO office ("; 87 $sql .= "companyoffice, cmpNum1, cmpname1, cmpname2, mssa1, mssa2, mssapass, mssaemail, mssatel1, mssafax1, mssazip, mssaprefecture, MssaAddress, sjs"; 88 $sql .= ") VALUES ("; 89 $sql .= ":companyoffice,:cmpNum1,:cmpname1,:cmpname2,:mssa1,:mssa2,:mssapass,:mssaemail,:mssatel1,:mssafax1,:mssazip,:mssaprefecture,:MssaAddress,:sjs"; 90 $sql .= ")"; 91 92 $stmt = $db->prepare($sql); 93 94 // パラメータのセットの仕方はマニュアルで確認してください。 95 $stmt->bindParam(':companyoffice', $companyoffice, PDO::PARAM_STR); 96 $stmt->bindParam(':cmpNum1', $cmpNum1, PDO::PARAM_INT); 97 $stmt->bindParam(':cmpname1', $cmpname1, PDO::PARAM_STR); 98 $stmt->bindParam(':cmpname2', $cmpname2, PDO::PARAM_STR); 99 $stmt->bindParam(':mssa1', $mssa1, PDO::PARAM_STR); 100 $stmt->bindParam(':mssa2', $mssa2, PDO::PARAM_STR); 101 $stmt->bindParam(':mssapass', $mssapass, PDO::PARAM_STR); 102 $stmt->bindParam(':mssaemail', $mssaemail, PDO::PARAM_STR); 103 $stmt->bindParam(':mssatel1', $mssatel1, PDO::PARAM_STR); 104 $stmt->bindParam(':mssafax1', $mssafax1, PDO::PARAM_STR); 105 $stmt->bindParam(':mssazip', $mssazip, PDO::PARAM_STR); 106 $stmt->bindParam(':mssaprefecture', $mssaprefecture, PDO::PARAM_STR); 107 $stmt->bindParam(':MssaAddress', $MssaAddress, PDO::PARAM_STR); 108 $stmt->bindParam(':sjs', $sjs, PDO::PARAM_STR); 109 110 // 実行 111 $stmt->execute(); 112 113 // セッションに保存 114 $_SESSION = filter_input_array(INPUT_POST); 115 } 116 } 117} catch (PDOException $e) { 118 $err['all'] = $e->getMessage(); 119} 120?> 121 122<!DOCTYPE HTML> 123<html lang="ja"> 124 <head> 125 <meta charset="UTF-8"> 126 <title></title> 127 </head> 128 <body> 129 130 <?php if (isset($err) && 0 < count($err)) : ?> 131 <p> 132 <?= nl2br(implode(PHP_EOL, $err)); ?> 133 </p> 134 <?php endif; ?> 135 136 <form method="post" action="" class="contact"> 137 <table> 138 <caption>事業者登録票</caption> 139 <tbody> 140 <tr> 141 <th><label for="section">事業者及びその事業所</label></th> 142 <td class="required" ><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> 143 <td colspan="10"><input type="text" name="companyoffice" value=""></td> 144 </tr> 145 <tr> 146 <th><label for="section">事業者番号 </label></th> 147 <td class="required" ><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> 148 <td><input type="number" name="cmpNum1" size="10" maxlength="30" value=""></td> 149 </tr> 150 <tr> 151 <th><label for="section">事業者代表名</label></th> 152 <td class="required" ><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> 153 <td colspan="10"><input type="text" name="cmpname1" size="10" maxlength="30" value=""></td> 154 </tr> 155 <tr> 156 <th><label for="section">事業者代表名 <span class="supplement">(フリガナ)</span></label></th> 157 <td class="required"><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> 158 <td colspan="10"><input type="text" name="cmpname2" size="10" maxlength="30" value=""></td> 159 </tr> 160 <tr> 161 <th><label for="section">本店システム管理者</label></th> 162 <td class="required" ><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> 163 <td colspan="10"><input type="text" name="mssa1" size="10" maxlength="30" value=""></td> 164 </tr> 165 <tr> 166 <th><label for="section">本店システム管理者<br><span class="supplement">(フリガナ)</span></label></th> 167 <td class="required"><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> 168 <td colspan="10"><input type="text" name="mssa2" size="10" maxlength="30" value=""></td> 169 </tr> 170 <tr> 171 <th><label for="email">本店管理者用<br>パスワード</label></th> 172 <td class="required"><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> 173 <td colspan="10"><input type="password" name="mssapass" size="30" maxlength="30"><br> 174 <span class="supplement">ご入力間違いのないようにご注意ください</span></td> 175 </tr> 176 <tr> 177 <th><label for="email">本店メールアドレス</label></th> 178 <td class="required"><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> 179 <td colspan="10"><input type="email" name="mssaemail" size="30" maxlength="50"><br> 180 <span class="supplement">ご入力間違いのないようにご注意ください</span></td> 181 </tr> 182 <tr> 183 <th><label for="tel1">本店電話番号</label></th> 184 <td class="required" ><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> 185 <td colspan="10"><input type="tel" name="mssatel1" size="15" maxlength="15"></td> 186 </tr> 187 <tr> 188 <th><label for="fax1">本店FAX番号</label></th> 189 <td class="required" ><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> 190 <td colspan="10"><input type="text" name="mssafax1" size="15" maxlength="15"></td> 191 </tr> 192 <tr> 193 <th rowspan="3"><label for="zip1">本店住所</label></th> 194 <td class="required" ><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> 195 <td colspan="10"><label for="zip1"></label> 196 <input type="number" name="mssazip" size="5" maxlength="10" value=""></td> 197 </tr> 198 <tr> 199 <td class="required"><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> 200 <td colspan="10"><input type="address" name="mssaprefecture" size="40" maxlength="20"></td> 201 </tr> 202 <tr> 203 <td class="required" ><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> 204 <td colspan="10"><input type="address" name="MssaAddress" size="40" maxlength="20"></td> 205 </tr> 206 <tr> 207 <th><label for="company">就労支援種目</label></th> 208 <td class="required" ><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> 209 <td colspan="10"><input type="checkbox" name="sjs" value="A:雇用型" checked>A:雇用型 210 <input type="checkbox" name="sjs" value="B:非雇用型">B:非雇用型 211 <input type="checkbox" name="sjs" value="C:就労移行支援">C:就労移行支援</td> 212 </tr> 213 <tr> 214 </table> 215 <a href="company.php?action=rewrite">&laquo;&nbsp;書き直す</a> 216 <p class="button"><input type="submit" value="登録"></p> 217 </form> 218 </body> 219</html>

よくみたら、HTMLも文法かなり無視したオレオレルールで書いてますね…
type 属性に存在しないものを書いているし、label for とコントロールが一致してないし。

投稿2016/09/13 10:11

編集2016/09/13 11:34
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

rura

2016/09/13 12:12

ご回答下さいまして、誠にありがとうございます。 こんな感じでいいですか? <?php ini_set('display_errors', 1); error_reporting(E_ALL); $dsn = 'mysql:dbname=mfdb;host=localhost'; $user = 'root'; $password = ''; try { if (filter_input_array(INPUT_POST)) { $companyoffice = filter_input(INPUT_POST, 'companyoffice'); $cmpNum1 = filter_input(INPUT_POST, 'cmpNum1'); $cmpname1 = filter_input(INPUT_POST, 'cmpname1'); $cmpname2 = filter_input(INPUT_POST, 'cmpname2'); $mssa1 = filter_input(INPUT_POST, 'mssa1'); $mssa2 = filter_input(INPUT_POST, 'mssa2'); $mssapass = filter_input(INPUT_POST, 'mssapass'); $mssaemail = filter_input(INPUT_POST, 'mssaemail'); $mssatel1 = filter_input(INPUT_POST, 'mssatel1'); $mssafax1 = filter_input(INPUT_POST, 'mssafax1'); $mssazip = filter_input(INPUT_POST, 'mssazip'); $mssaprefecture = filter_input(INPUT_POST, 'mssaprefecture'); $mssaAddress = filter_input(INPUT_POST, 'mssaAddress'); $mssabill = filter_input(INPUT_POST, 'mssabill'); $sjs = filter_input(INPUT_POST, 'sjs'); $err = array(); if (empty($companyoffice)) { $err['companyoffice'] = "事業者及びその事業所を入力してください"; } if (empty($cmpNum1)) { $err['cmpNum1'] = "事業者代表名(フリガナ)を入力してください"; } if (empty($cmpname1)) { $err['cmpname1'] = "事業者代表名を入力してください"; } if (empty($cmpname2)) { $err['cmpname2'] = "事業者代表名(フリガナ)を入力してください"; } if (empty($mssa1)) { $err['mssa1'] = "本店システム管理者を入力してください"; } if (empty($mssa2)) { $err['mssa2'] = "本店システム管理者(フリガナ)を入力してください"; } if (empty($mssapass)) { $err['mssapass'] = "本店管理者用パスワードを入力してください"; } if (empty($mssaemail)) { $err['mssaemail'] = "本店メールアドレスを入力してください"; } if (empty($mssatel1)) { $err['mssatel1'] = "本店電話番号の左を入力してください"; } if (empty($mssafax1)) { $err['mssafax1'] = "本店FAX番号の左を入力してください"; } if (empty($mssazip)) { $err['mssazip'] = "本店郵便番号を入力してください"; } if (empty($mssaprefecture)) { $err['mssaprefecture'] = "本店都道府県を入力してください"; } if (empty($mssaAddress)) { $err['MssaAddress'] = "本店住所を入力してください"; } // どこで使うおつもり? if (empty($mssabill)) { $err['Mssabill'] = "本店所在ビルを入力してください"; } if (empty($sjs)) { $err['sjs'] = "就労支援種目を入力してください"; } // エラーの数を数えて、エラーがなければインサート if (0 == count($err)) { $db = new PDO($dsn, $user, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); $sql = "INSERT INTO office ("; $sql .= "companyoffice, cmpNum1, cmpname1, cmpname2, mssa1, mssa2, mssapass, mssaemail, mssatel1, mssafax1, mssazip, mssaprefecture, mssaAddress, mssabill, sjs"; $sql .= ") VALUES ("; $sql .= ":companyoffice,:cmpNum1,:cmpname1,:cmpname2,:mssa1,:mssa2,:mssapass,:mssaemail,:mssatel1,:mssafax1,:mssazip,:mssaprefecture,:mssaAddress,:mssabill,:sjs"; $sql .= ")"; $stmt = $db->prepare($sql); // パラメータのセットの仕方はマニュアルで確認してください。 $stmt->bindParam(1, $companyoffice, PDO::PARAM_STR); $stmt->bindParam(2, $cmpNum1, PDO::PARAM_INT); $stmt->bindParam(3, $cmpname1, PDO::PARAM_STR); $stmt->bindParam(4, $cmpname2, PDO::PARAM_STR); $stmt->bindParam(4, $mssa1, PDO::PARAM_STR); $stmt->bindParam(5, $mssa2, PDO::PARAM_STR); $stmt->bindParam(6, $mssapass, PDO::PARAM_STR); $stmt->bindParam(7, $mssaemail, PDO::PARAM_STR); $stmt->bindParam(8, $mssatel1, PDO::PARAM_STR); $stmt->bindParam(9, $mssafax1, PDO::PARAM_STR); $stmt->bindParam(10, $mssazip, PDO::PARAM_STR); $stmt->bindParam(11, $mssaprefecture, PDO::PARAM_STR); $stmt->bindParam(12, $mssaAddress, PDO::PARAM_STR); $stmt->bindParam(13, $mssabill, PDO::PARAM_STR); $stmt->bindParam(14, $sjs, PDO::PARAM_STR); // 実行 $stmt->execute(); } } } catch (PDOException $e) { $err['all'] = $e->getMessage(); } ?> <!DOCTYPE HTML> <html lang="ja"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <?php if (isset($err) && 0 < count($err)) : ?> <p> <?= nl2br(implode(PHP_EOL, $err)); ?> </p> <?php endif; ?> <form method="post" action="" class="contact"> <table> <caption>事業者登録票</caption> <tbody> <tr> <th><label for="section">事業者及びその事業所</label></th> <td class="required" ><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> <td colspan="10"><input type="text" name="companyoffice" value=""></td> </tr> <tr> <th><label for="section">事業者番号 </label></th> <td class="required" ><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> <td><input type="number" name="cmpNum1" size="10" maxlength="30" value=""></td> </tr> <tr> <th><label for="section">事業者代表名</label></th> <td class="required" ><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> <td colspan="10"><input type="text" name="cmpname1" size="10" maxlength="30" value=""></td> </tr> <tr> <th><label for="section">事業者代表名 <span class="supplement">(フリガナ)</span></label></th> <td class="required"><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> <td colspan="10"><input type="text" name="cmpname2" size="10" maxlength="30" value=""></td> </tr> <tr> <th><label for="section">本店システム管理者</label></th> <td class="required" ><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> <td colspan="10"><input type="text" name="mssa1" size="10" maxlength="30" value=""></td> </tr> <tr> <th><label for="section">本店システム管理者<br><span class="supplement">(フリガナ)</span></label></th> <td class="required"><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> <td colspan="10"><input type="text" name="mssa2" size="10" maxlength="30" value=""></td> </tr> <tr> <th><label for="email">本店管理者用<br>パスワード</label></th> <td class="required"><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> <td colspan="10"><input type="password" name="mssapass" size="30" maxlength="30"><br> <span class="supplement">ご入力間違いのないようにご注意ください</span></td> </tr> <tr> <th><label for="email">本店メールアドレス</label></th> <td class="required"><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> <td colspan="10"><input type="email" name="mssaemail" size="30" maxlength="50"><br> <span class="supplement">ご入力間違いのないようにご注意ください</span></td> </tr> <tr> <th><label for="tel1">本店電話番号</label></th> <td class="required" ><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> <td colspan="10"><input type="tel" name="mssatel1" size="15" maxlength="15"></td> </tr> <tr> <th><label for="fax1">本店FAX番号</label></th> <td class="required" ><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> <td colspan="10"><input type="text" name="mssafax1" size="15" maxlength="15"></td> </tr> <tr> <th rowspan="4"><label for="zip1">本店住所</label></th> <td class="required" ><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> <td colspan="10"><label for="zip1">〒</label> <input type="number" name="mssazip" size="5" maxlength="10" value=""></td> </tr> <tr> <td class="required"><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> <td colspan="10"><input type="address" name="mssaprefecture" size="40" maxlength="20"></td> </tr> <tr> <td class="required" ><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> <td colspan="10"><input type="address" name="mssaAddress" size="40" maxlength="20"></td> </tr> <tr> <td class="required" ><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> <td colspan="10"><input type="address" name="mssabill" size="40" maxlength="20"></td> </tr> <tr> <th><label for="company">就労支援種目</label></th> <td class="required" ><img src="./img/required1.gif" alt="必須" width="26" height="15"></td> <td colspan="10"><input type="checkbox" name="sjs" value="A:雇用型" checked>A:雇用型 <input type="checkbox" name="sjs" value="B:非雇用型">B:非雇用型 <input type="checkbox" name="sjs" value="C:就労移行支援">C:就労移行支援</td> </tr> <tr> </table>
退会済みユーザー

退会済みユーザー

2016/09/13 12:22 編集

いいかどうかはご自身で判断してください。実行すればわかることですし、 なにか問題があるならば、具体的な質問にしてください。 だいたい、私が書いた回答そのまんまじゃありませんか。一体何をチェックしてくれというのでしょうか?どこをどういじったのか差分とることまで、回答者がやらなきゃいけないことなんでしょうかね。
rura

2016/09/14 01:59

SQLSTATE[HY093]: Invalid parameter number: parameter was not definedのバグ取り方法が知りたいです。 あなたの文に切り替えてもエラーが出ます
退会済みユーザー

退会済みユーザー

2016/09/14 03:54

パラメータのセットの仕方が違います。
rura

2016/09/14 04:00

すいません、どのようにしたら良いでしょうか? あと下記を使って、エラー出力しようにも出力先や設定がよく分かりません ini_set('display_errors', 'On'); error_reporting(E_ALL);
退会済みユーザー

退会済みユーザー

2016/09/14 04:02

ini_set('display_errors', 'On'); error_reporting(E_ALL); は画面にエラーを出力するコード。 プリペアドステートメントとパラメータのセットの仕方は ?, ?, ? を使うときは、番号で、:name のように名前を使うときはその名前を使う。
rura

2016/09/14 04:08

ありがとうございます。 $stmt->bindParam(1, $companyoffice, PDO::PARAM_STR);ですが、 こうでしょうか? $stmt->bindParam(1, :companyoffice, PDO::PARAM_STR);
退会済みユーザー

退会済みユーザー

2016/09/14 04:15 編集

SQLに合わせてください。現状のあなたの手元のソースがどうなっているか私には判断できません。 私の回答と、ちゃんと見比べてください。見ればわかります。
rura

2016/09/14 05:11

どうもありがとうございます。
guest

0

PHP

1$stmt->execute();

で実行するので

PHP

1$stmt->bindParam(':companyoffice', $companyoffice, PDO::PARAM_STR); 2$stmt->bindParam(':cmpNum1', $cmpNum1, PDO::PARAM_INT); 3$stmt->bindParam(':cmpname1', $cmpname1, PDO::PARAM_STR); 4$stmt->bindParam(':cmpname2', $cmpname2, PDO::PARAM_STR); 5$stmt->bindParam(':mssa1', $mssa1, PDO::PARAM_STR); 6$stmt->bindParam(':mssa2', $mssa2, PDO::PARAM_STR); 7$stmt->bindParam(':mssapass', $mssapass, PDO::PARAM_STR); 8$stmt->bindParam(':mssaemail', $mssaemail, PDO::PARAM_STR); 9$stmt->bindParam(':mssatel1', $mssatel1, PDO::PARAM_STR); 10$stmt->bindParam(':mssafax1', $mssafax1, PDO::PARAM_STR); 11$stmt->bindParam(':mssazip', $mssazip, PDO::PARAM_STR); 12$stmt->bindParam(':mssaprefecture', $mssaprefecture, PDO::PARAM_STR); 13$stmt->bindParam(':MssaAddress', $MssaAddress, PDO::PARAM_STR); 14$stmt->bindParam(':sjs', $sjs, PDO::PARAM_STR); 15$stmt->execute();

としてみたらいかがでしょうか?

投稿2016/09/13 10:09

roast_chicken

総合スコア254

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

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

roast_chicken

2016/09/13 10:27

ご指摘ありがとうございます! すみません、コピペでした。
rura

2016/09/13 11:33

ご回答ありがとうございます。 こんな風で良いですか? $stmt->bindParam(1, $companyoffice, PDO::PARAM_STR); $stmt->bindParam(2, $cmpNum1, PDO::PARAM_INT); $stmt->bindParam(3, $cmpname1, PDO::PARAM_STR); $stmt->bindParam(4, $cmpname2, PDO::PARAM_STR); $stmt->bindParam(4, $mssa1, PDO::PARAM_STR); $stmt->bindParam(5, $mssa2, PDO::PARAM_STR); $stmt->bindParam(6, $mssapass, PDO::PARAM_STR); $stmt->bindParam(7, $mssaemail, PDO::PARAM_STR); $stmt->bindParam(8, $mssatel1, PDO::PARAM_STR); $stmt->bindParam(9, $mssafax1, PDO::PARAM_STR); $stmt->bindParam(10, $mssazip, PDO::PARAM_STR); $stmt->bindParam(11, $mssaprefecture, PDO::PARAM_STR); $stmt->bindParam(12, $MssaAddress, PDO::PARAM_STR); $stmt->bindParam(13, $Mssabill, PDO::PARAM_STR); $stmt->bindParam(14, $sjs, PDO::PARAM_STR);
guest

0

ベストアンサー

php

1$sql = "INSERT INTO office (companyoffice, cmpNum1, cmpname1, cmpname2, mssa1, mssa2, mssapass, mssaemail, mssatel1, mssafax1, mssazip, mssaprefecture, mssaAddress, mssabill, sjs)"; 2 $sql .= "VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; 3 4 $stmt = $db->prepare ( $sql ); 5 // パラメータのセットの仕方はマニュアルで確認してください。 6 $stmt->bindParam ( 1, $companyoffice, PDO::PARAM_STR ); 7 $stmt->bindParam ( 2, $cmpNum1, PDO::PARAM_INT ); 8 $stmt->bindParam ( 3, $cmpname1, PDO::PARAM_STR ); 9 $stmt->bindParam ( 4, $cmpname2, PDO::PARAM_STR ); 10 $stmt->bindParam ( 5, $mssa1, PDO::PARAM_STR ); 11 $stmt->bindParam ( 6, $mssa2, PDO::PARAM_STR ); 12 $stmt->bindParam ( 7, $mssapass, PDO::PARAM_STR ); 13 $stmt->bindParam ( 8, $mssaemail, PDO::PARAM_STR ); 14 $stmt->bindParam ( 9, $mssatel1, PDO::PARAM_STR ); 15 $stmt->bindParam ( 10, $mssafax1, PDO::PARAM_STR ); 16 $stmt->bindParam ( 11, $mssazip, PDO::PARAM_STR ); 17 $stmt->bindParam ( 12, $mssaprefecture, PDO::PARAM_STR ); 18 $stmt->bindParam ( 13, $mssaAddress, PDO::PARAM_STR ); 19 $stmt->bindParam ( 14, $mssabill, PDO::PARAM_STR ); 20 $stmt->bindParam ( 15, $sjs, PDO::PARAM_STR ); 21 print $sql;

数字でやるのはこんな感じ
補足ですが、ビル名は任意にした方がいいですよ

投稿2016/09/14 02:32

date

総合スコア1820

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問