2010-12-02 5 views
2

テーブルに列挙型の列があるとし、PHPを使用してテーブルを変更してより多くのものを含むようにすることで、フロントエンドのHTMLフォームの提出によって値の数を増やすことができるようにしたいその列の列挙型の値。PHPでMySQLテーブルのENUM列をHTML形式で変更するのは悪い考えですか?

  • テーブル 構造を変更することがしばしば非常に クエリを実行するために、悪い考えますか?
  • 私には見えないセキュリティの問題 がありますか?
  • のテーブルを変更する前にユーザー入力を消毒すると、新しい の値で十分ですか?
+5

はい、実行時に何かを変更するのは悪い考えです。必要な場合は、データベースの設定が間違っています。ほとんどの場合、列挙型列ではなく別の表が必要です。完全性のために。そして、あなたは何かを衛生的にすることができるとは思わない。ここの人々の大半は衛生措置を知らない。 –

+0

@Col。 Shrapnel:最初はenum値を設定しようとしているときには、ここでは公正な文を使用できません。誰もがこれに釘付けになっていると思う。この質問では –

+1

+1 Enumを許可された値の動的リストのようなものとして使用するのは魅力的です。 「なぜ私はこのリファレンスリストのために別のテーブルが必要ですか?しかし、人々は "ダイナミック"はそれがどのように動作していないかを知る必要があります。私は一度これを難しい方法で見つけました。 –

答えて

2

Col.Shrapnelがすでに言ったように、はい、それは悪い考えです。特にデータベースを管理するアプリケーションを作成している場合を除いて、ほとんどの例外を除いてアプリがデータベースを変更できるようにすることはお勧めできません(したがって、一時表を自由に使用できます)。 PHPでもそうだ。最も直ちに明らかな影響は、列挙型リストの値を変更すると、その古い値を使用するテーブル内のすべてのレコードのこのフィールドが消去されることです。 mysql manualからの選択の引用...

 
An ENUM is a string object with a value chosen from a list of permitted values 
that are enumerated explicitly in the column specification 
at table creation time. 
3

はい、悪い考えです。リストを編集可能にする必要がある場合は、それを参照先テーブルにする必要があります。 一般的に悪い習慣とは別に、テーブルの再インデックスが発生する可能性があります。これは、特に大きなテーブルに大きな影響を与えます。

関連する問題