2012-05-01 18 views
-1

私は単純なフォームを作成してユーザーがサプライ品をリクエストするようにしていますが、送信すると一般的なエラーが表示され続けます。私のミスがどこにあるか私は...ここにコードがあります...mysqlクエリがデータベースに挿入されていません

 CREATE TABLE `teacherrequests` (
    `name` varchar(64) NOT NULL, 
    `binder` varchar(3) NOT NULL, 
    `binderpage` varchar(2) NOT NULL, 
    `binderdiv` varchar(2) NOT NULL, 
    `calcr` varchar(2) NOT NULL, 
    `chalkcolor` varchar(2) NOT NULL, 
    `chalkwhite` varchar(2) NOT NULL, 
    `chalkeraser` varchar(2) NOT NULL, 
    `colpencil` varchar(2) NOT NULL, 
    `dryerasecleaner` varchar(2) NOT NULL, 
    `dryeraser` varchar(2) NOT NULL, 
    `dryerasemarkers` varchar(2) NOT NULL, 
    `filefolders` varchar(2) NOT NULL, 
    `gluesticks` varchar(2) NOT NULL, 
    `hangingfile` varchar(2) NOT NULL, 
    `highlightermulti` varchar(2) NOT NULL, 
    `highlighterone` varchar(2) NOT NULL, 
    `holepunch3` varchar(2) NOT NULL, 
    `holepunch1` varchar(2) NOT NULL, 
    `index35` varchar(2) NOT NULL, 
    `index57` varchar(2) NOT NULL, 
    `markers` varchar(2) NOT NULL, 
    `papergraph` varchar(2) NOT NULL, 
    `paperlegal` varchar(2) NOT NULL, 
    `papersteno` varchar(2) NOT NULL, 
    `paperwhitelined` varchar(2) NOT NULL, 
    `paperclipsbindlg` varchar(2) NOT NULL, 
    `paperclipsbindmd` varchar(2) NOT NULL, 
    `paperclipsbindsm` varchar(2) NOT NULL, 
    `paperclipslg` varchar(2) NOT NULL, 
    `paperclipsmd` varchar(2) NOT NULL, 
    `paperclipssm` varchar(2) NOT NULL, 
    `pencil` varchar(2) NOT NULL, 
    `pencilsharp` varchar(2) NOT NULL, 
    `pensblack` varchar(2) NOT NULL, 
    `pensblue` varchar(2) NOT NULL, 
    `pensgreen` varchar(2) NOT NULL, 
    `pensred` varchar(2) NOT NULL, 
    `permanentmarker` varchar(2) NOT NULL, 
    `postit` varchar(2) NOT NULL, 
    `postitsmall` varchar(2) NOT NULL, 
    `stapler` varchar(2) NOT NULL, 
    `staples` varchar(2) NOT NULL, 
    `tapedbl` varchar(2) NOT NULL, 
    `tapemasking` varchar(2) NOT NULL, 
    `tapescotch` varchar(2) NOT NULL, 
    `tapedispenser` varchar(2) NOT NULL, 
    `tacks` varchar(2) NOT NULL, 
    `clock` varchar(2) NOT NULL, 
    `whiteout` varchar(2) NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

が表示されていない私は自分のフォームに対してこれらをチェックしました、それらはすべて一致します。

$name = $_POST['name']; 
$binder = $_POST['binder']; 
$binderpage = $_POST['binderpage']; 
$binderdiv = $_POST['binderdiv']; 
$calc = $_POST['calc']; 
$chalkcolor = $_POST['chalkcolor']; 
$chalkwhite = $_POST['chalkwhite']; 
$chalkeraser = $_POST['chalkeraser']; 
$colpencil = $_POST['colpencil']; 
$dryerasecleaner = $_POST['dryerasecleaner']; 
$dryeraser = $_POST['dryeraser']; 
$dryerasemarkers = $_POST['dryerasemarkers']; 
$filefolders = $_POST['filefolders']; 
$gluesticks = $_POST['gluesticks']; 
$hangingfile = $_POST['hangingfile']; 
$highlightermulti = $_POST['highlightermulti']; 
$highlighterone = $_POST['highlighterone']; 
$holepunch3 = $_POST['holepunch3']; 
$holepunch1 = $_POST['holepunch1']; 
$index35 = $_POST['index35']; 
$index57 = $_POST['index57']; 
$markers = $_POST['markers']; 
$papergraph = $_POST['papergraph']; 
$paperlegal = $_POST['paperlegal']; 
$papersteno = $_POST['papersteno']; 
$paperwhitelined = $_POST['paperwhitelined']; 
$paperclipsbindlg = $_POST['paperclipsbindlg']; 
$paperclipsbindmd = $_POST['paperclipsbindmd']; 
$paperclipsbindsm = $_POST['paperclipsbindsm']; 
$pencil = $_POST['pencil']; 
$pencilsharp = $_POST['pencilsharp']; 
$pensblack = $_POST['pensblack']; 
$pensblue = $_POST['pensblue']; 
$pensgreen = $_POST['pensgreen']; 
$pensred = $_POST['pensred']; 
$permanentmarker = $_POST['permanentmarker']; 
$postit = $_POST['postit']; 
$postitsmall = $_POST['postitsmall']; 
$stapleremover = $_POST['stapleremover']; 
$stapler = $_POST['stapler']; 
$staples = $_POST['staples']; 
$tapedbl = $_POST['tapedbl']; 
$tapemasking = $_POST['tapemasking']; 
$tapescotch = $_POST['tapescotch']; 
$tapedispenser = $_POST['tapedispenser']; 
$tacks = $_POST['tacks']; 
$clock = $_POST['clock']; 
$whiteout = $_POST['whiteout']; 

ここにエラーがあると思われますが、それを見つけることができません。ここで

// Insert data into mysql 

$sql="INSERT INTO teacherrequests(name, binder, binderpage, binderdiv, calcr, 
chalkcolor, chalkwhite, chalkeraser, colpencil, dryerasecleaner, dryeraser,  
dryerasemarkers, filefolders, gluesticks, hangingfile, highlightermulti, highlighterone,  
holepunch3, holepunch1, index35, index57, markers, papergraph, paperlegal, papersteno,  
paperwhitelined, paperclipsbindlg, paperclipsbindmd, paperclipsbindsm, pencil,  
pencilsharp, pensblack, pensblue, pensgreen, pensred, permanentmarker, postit,  
postitsmall, stapleremover, stapler, staples, tapedbl, tapemasking, tapescotch,  
tapedispenser, tacks, clock, whiteout) 

VALUES('$name', '$binder', '$binderpage',  
'$binderdiv', '$calc', '$chalkcolor', '$chalkwhite', '$chalkeraser', '$colpencil',  
'$dryerasecleaner', '$dryeraser', '$dryerasemarkers', '$filefolders', '$gluesticks',  
'$hangingfile', '$highlightermulti', '$highlighterone', '$holepunch3', '$holepunch1',  
'$index35', '$index57', '$markers', '$papergraph', '$paperlegal', '$papersteno',  
'$paperwhitelined', '$paperclipsbindlg', '$paperclipsbindmd', '$paperclipsbindsm',  
'$pencil', '$pencilsharp', '$pensblack', '$pensblue', '$pensgreen', '$pensred',  
'$permanentmarker', '$postit', '$postitsmall', '$stapleremover', '$stapler', '$staples',  
'$tapedbl', '$tapemasking', '$tapescotch', '$tapedispenser', '$tacks', '$clock',  
'$whiteout')"; 

$result=mysql_query($sql); 

はのvar_dumpです:

ERRORstring(811) "INSERT INTO teacherrequests(name, binder, binderpage, binderdiv, calcr, chalkcolor, chalkwhite, chalkeraser, colpencil, dryerasecleaner, dryeraser, dryerasemarkers, filefolders, gluesticks, hangingfile, highlightermulti, highlighterone, holepunch3, holepunch1, index35, index57, markers, papergraph, paperlegal, papersteno, paperwhitelined, paperclipsbindlg, paperclipsbindmd, paperclipsbindsm, pencil, pencilsharp, pensblack, pensblue, pensgreen, pensred, permanentmarker, postit, postitsmall, stapleremover, stapler, staples, tapedbl, tapemasking, tapescotch, tapedispenser, tacks, clock, whiteout)VALUES('Joe Spano', '3', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '4', '', '', '', '', '', '2', '', '', '', '', '', '', '', '', '', '5', '', '', '', '', '', '', '', '')" 
+0

一般的なエラーは何ですか? – dweiss

+0

エラーメッセージは何ですか? – SeventotheSeven

+0

$ resultに 'var_dump'を実行できますか? nullの場合、mysql_queryにエラーが発生した可能性があります。 – philwinkle

答えて

7

は、PHPコードで

$calc = $_POST['calc']; 

と比較して、あなたの作成、テーブルのコード上の

`calcr` varchar(2) NOT NULL, 

を見てみましょう。私は最後に余分な "r"が付いた単純なタイプミスだと思っています。

私はまた、これらのコード行は、他のファイルに付随する行を持っていなかったが見つかりました:

`paperclipslg` varchar(2) NOT NULL, 
    `paperclipsmd` varchar(2) NOT NULL, 
    `paperclipssm` varchar(2) NOT NULL, 

    $stapleremover = $_POST['stapleremover']; 

希望に役立ちます!

[編集]あなたの挿入物とあなたの値の間に矛盾は見られませんでした。だから私はこれをさらに見て、私は問題を解決するのを手伝ったとは思わない。私は欠けているかもしれないデータしか見つけられませんでした。

+2

彼は 'INSERT INTO teacherrequests(...、calcr、...)VALUES(...、$ calc、...)'を持っているので、それはそれだとは思わない。 –

+0

2番目の部分で問題が解決されました。 $ stapleremoverはデータベースにはなく、他の変数は渡されていませんでした。 ありがとうございました – Joe

+0

ええと、私は、calc vs calcrが何の問題も生じないことに気付きました。私のすべてのデータに同じ名前を付けるのが好きなので、私の頭の中の「エラー」だった。 –

14

まず、このデータベース設計を行い、ゴミ箱に投げ捨ててください。そして、この設計でそれを置き換える:

CREATE TABLE teachingmaterials (
    id SMALLINT NOT NULL AUTO_INCREMENT, 
    name VARCHAR(64) NOT NULL, 
    PRIMARY KEY (id) 
) ENGINE=INNODB CHARACTER SET utf8; 

INSERT INTO 
    teachingmaterials 
    (name) 
VALUES 
    ('binder'), 
    ('binder-page'), 
    ('binder-div'), 
    -- put the rest of them in here -- 
    ('whiteout'); 

CREATE TABLE teacherrequests (
    id INT NOT NULL AUTO_INCREMENT, 
    name VARCHAR(64) NOT NULL, 
    PRIMARY KEY (id) 
) ENGINE=INNODB CHARACTER SET utf8; 

CREATE TABLE teacherrequests_teachingmaterials (
    teacherrequests_id INT NOT NULL, 
    teachingmaterials_id SMALLINT NOT NULL, 
    amount SMALLINT, 
    note VARCHAR(64), 
    PRIMARY KEY (teacherrequests_id, teachingmaterials_id) 
    FOREIGN KEY (teacherrequests_id) REFERENCES teacherrequests (id) ON DELETE CASCADE, 
    FOREIGN KEY (teachingmaterials_id) REFERENCES teachingmaterials (id) 
) ENGINE=INNODB CHARACTER SET utf8; 

あなたはまた古いmysql_*機能の使用を停止し、代わりにPDOを使用するように切り替える必要があります。

+0

ありがとうございます。私はこれを試してみる。私はこのことではっきりと新しく、dbデザインの経験はほとんどありません。 – Joe

関連する問題