- 締切済み
データベースへのデータの受け渡し
今データベースとCGIを自分で作り掲示板のような物を作成しています。 その中で、データベースにデータを受け渡す部分を if($syoujyou ne "" and $geninn eq "" and $taisyo eq ""){ $INS = $dbh->prepare("INSERT INTO $DBtable (syurui,syoujyou,geninn,taisyo) VALUES (\'$syurui\',\'$syoujyou\',\'$geninn\',\'$taisyo\')"); $INS->execute or $err2 = "execute"; } 上記のように記述しています。 このままでCGIを実行し、書き込みを行うとデータがデータベースに受け渡されません。 試しにif文を除き強制的に実行してもダメでした。 その代わり、if文を除くと何も書き込まない状態(受け渡しの変数内<(\'$syurui\',\'$syoujyou\',\'$geninn\',\'$taisyo\')>がNULL)だと書き込まれます。 つまりデータベースには何もない状態でテーブルの中にカラムが作成されます。 データベースは create table データベース名 ( id INT(4) AUTO_INCREMENT NOT NULL, syurui TEXT NOT NULL , syoujyou TEXT NOT NULL, geninn TEXT NOT NULL, taisyo TEXT NOT NULL, PRIMARY KEY(id) ) AUTO_INCREMENT = 1; のようにして作っています。 更に、上記の中のINSERT文をprintし、表示された物 INSERT INTO データベースの名前 (syurui,syoujyou,geninn,taisyo) VALUES ('ハード','あ','い','う') を直接プロンプトから実行した場合データは正しく挿入されます。 更にデータを消す文として if(($delpass == '****') and ($delfilid ne "")){ $DELETE = $dbh->prepare("DELETE FROM $DBtable WHERE id=\'$delfilid\'"); $DELETE->execute; $DELETE->finish; } と記述しているのですが、これは正常に動作します。 何がいけないのかが判らないので詳しい方教えてください。
- みんなの回答 (4)
- 専門家の回答
補足
このスクリプトは動きました! 何故自分で書いた者でuse strict;が許可されなかったのかは、まだわからないんですが… でもデータベースにデータは入りませんでした。