さまざまな数字 (「10 11 12」など) を MySQL フィールド (数字は PHP から取得) に挿入しようとしていますが、クエリを実行すると、フィールドは最初の数字しか取得しません。
たとえば、次のようにします。
UPDATE profile SET subcategory = '10 11 12' WHERE userId = 1 LIMIT 1
そしてDBは「10」を登録するだけです。
それを行う方法はありますか?
これは、数値 (おそらく整数) を更新しているために発生するため、mysql は最初の数値に対してのみジョブを実行します。
これを行う場合:
UPDATE profile SET subcategory = 10 WHERE userId = 1 LIMIT 1
UPDATE profile SET subcategory = 11 WHERE userId = 1 LIMIT 1
UPDATE profile SET subcategory = 12 WHERE userId = 1 LIMIT 1
カテゴリを 3 番目の値 (12) で更新するだけです。
別のテーブルを作成する必要があるため、複数のサブカテゴリに属するユーザーをお勧めします。例: userId と subcategoryId の少なくとも 2 つのフィールドを持つ subcategories という名前のテーブル。そして、次のようなことができます:
DELETE FROM subcategories WHERE userId=1
INSERT INTO subcategories (userId, subcategory) VALUES (1,10)
INSERT INTO subcategories (userId, subcategory) VALUES (1,11)
INSERT INTO subcategories (userId, subcategory) VALUES (1,12)
最初の行 (削除) は、ユーザーのサブカテゴリを更新するためだけに使用されます。まず、ユーザーの古いサブカテゴリをすべて削除してから、新しいサブカテゴリを挿入します。PHP では、 foreach() を使用して複数の値の挿入を自動化できます。
ユーザー サブカテゴリごとのエントリを持つテーブル プロファイルに一意でない userId を含めることもできますが、これは複雑になります。
お役に立てば幸いです
これは、解決しようとしている問題に大きく依存します。
少数の数値を格納しようとしているだけの場合は、php の結合関数と分割関数を使用して数値のリストを取得し、文字列との間で変換して VARCHAR に格納します。
この問題を解決するより良い方法は、データのレイアウトを理解することです。プロファイルをサブカテゴリにリンクするテーブルを用意してみてください。プロファイル ID 用とサブカテゴリ ID 用の 2 つの列。データベースの正規化を検索すると参考になるかもしれません。
このプレゼンテーションは比較的有益に見えます: http://www.sqa.org.uk/e-learning/MDBS01CD/page_26.htm
あなたの問題から、サブカテゴリのタイプは整数であると思います。ひもを入れるとどうなる?変換されます。コンバーターは、10 が文字列と見なされた後の 10 スペースである最初の適切な整数に変換します。
あなたの問題を解決できるものは何ですか?