0

これは私のコードです:

mysql_query("INSERT INTO jokes (headline, text, type) VALUES ('{$_POST['headline']}','{$_POST['text']}', '{$_POST['type']}')") or die(mysql_error());  

選択オプションを投稿したいのですが、

<select name="type">  
<option value="regular">regular joke</option>  
<option value="other">other</option>
</select>

それは私の理論ですが、うまくいきません(データベースには表示されません。通常の列挙型フィールドとその他の列挙型フィールドがあります)。何か助けはありますか?

編集:気にしないで、列挙型を varchar に変更したところ、動作するようになりました:)

4

2 に答える 2

0

(POST 配列名の) 一重引用符がさらに一重引用符の中にネストされているため、この行は間違いなくエラーをスローします。それらをエスケープするか、次のように記述します。

mysql_query("INSERT INTO jokes (headline, text, type) VALUES ('" . $_POST['headline']. "','" . $_POST['text'] . "', '" . $_POST['type'] . "')") or die(mysql_error());

また、多くの頭痛の種や未知のエラーを避けるために、次のような予約語を変数として使用しないでください。

text
type

ずいぶん前に PHP を使い始めたばかりのとき、次の名前の mySql フィールドがあったため、数日ではないにしても数時間は頭痛の種でした。

于 2016-05-16T15:51:12.870 に答える
0

データベースをこのように変更してから、挿入クエリを実行します。うまくいくことを願っています

alter table `database_name`.`jokes` change `type` `type` enum('regular','other') NULL ;
于 2012-06-23T15:45:52.873 に答える