データベースへのデータの受け渡し
今データベースと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;
}
と記述しているのですが、これは正常に動作します。
何がいけないのかが判らないので詳しい方教えてください。