2017-11-15 4 views
-2

変数を使用して自動的にデータベーステーブルに列を挿入しようとしています。PHPで変数を使用して自動的にデータベーステーブルにカラムを挿入できますか?

私はtbl_categoryという名前のテーブルを持っています。ユーザーが自分の選択でサブカテゴリフィールドを選択できるようにします。したがって、ダッシュボードから、ユーザーは3/4(またはいくつのフィールドを作成したいか)のサブカテゴリフィールドを挿入します。

この値は$insert_sub_cat_countとします。したがって、この情報がfunction save_category_info($data)という名前の関数にヒットすると、関数は$insert_sub_cat_countという値を$dataとして受け取ります。

その後、この情報はテーブルtbl_categoryに実装し、値$dataに従って3/4フィールドを自動的に追加する必要があります。

ユーザ入力2場合、これは自動的に2つの列を挿入します:

enter image description here

をユーザ入力3場合、これは3つの列を挿入します:

enter image description here

を可能にこのです?私は列を自動的に拡張する方法やそれ以外の方法があるかどうかわかりません。

+0

これらは行ではなく、テーブルの列です。そして、列を作成するための** **すべての良いデザインではありません** – Ravi

+0

ので、各ユーザーごとに異なるテーブルの列を作成するには?または既存の列に行を追加したい場合は、それは全く異なっている – Pascut

+0

私の悪い、質問が編集されました。行ではなく列になります。誰でも助けてくれますか? :) – Gamer

答えて

1

挿入がすでに既存の列に変数を挿入するために使用され、あなたが最初にそれを充填する前に、あなたの列を作成する必要があります。

ALTER TABLE `tbl_category` ADD `sub_category_one` VARCHAR(100) NOT NULL; 
2

これは非常に最初から悪い考えです。 Raymond Nijlandが上記のように(「増分付きの同じ列名はSQLの反パターンです。代わりに表の正規化をチェックする必要があります」)、データベースに希望の名前の列を作成できないようにする必要があります。次の表が必要です。

user - id, name 
categories - id, id_user, name 
subcategories - id, id_category, id_user, name 

したがって、カテゴリとサブカテゴリを作成したユーザーにリンクすることができます。ユーザーごとに個別の列を作成する必要はありません。 速度が心配な場合は、列id_userに対して、サブカテゴリテーブルのインデックスを追加する必要があります。このようにして、検索は十分に速く動作します。

+0

注意深く読んでも、明らかにユーザーが列に名前を付けさせていないことがわかります(これがレイモンドが自動インクリメントしたと思う理由です)。 –

+0

ここでOPが取っているアプローチは、事前に定義された子どものセットでは正常ですが、理論的に無制限の数の子どもがどれくらいの数の子供を持つかを動的に定義して、道のりは良いです。 – Freddy

関連する問題