2017-05-30 24 views
0

基本的に私は複数の場所システムを持ち、ユーザーはその場所に割り当てられています。ログイン中にログインする場所(データベース)が選択され、選択された場所が割り当てられた場所と等しい場合は、続行できます。そうでない場合、エラーが表示されます。これはすべて正常に動作しますが、ユーザーごとに複数の場所があります。単一のSQLフィールドから配列に値を追加する

私のSQLテーブルには、locationという1つの場所が含まれています。コンマで区切られた別の場所を追加すると、ユーザーがログインすると列に値を格納した後に値(つまり:location1、location 2)を格納する方法があります。

SQLの例だから、場所の行は技術的にここで2つの値を持っているでしょう...

SELECT location FROM users WHERE userid = 25 

を使用すること。 これを配列に入れたら、inarray()関数を使ってチェックを行うことができます。

+1

各ユーザーに複数の場所がある場合は、別々のテーブルに入れてみましょう。たとえば、 'id、user_id、location'フィールドを持つ' users_locations'テーブルです。 – Anton

+0

複数の特異な場所を繰り返してはいけない場合は参照整合性が失われます。場所の割り当てをManyToMany関連テーブルに変更できます。ユーザーIDと場所IDを格納する 'users_locations'という名前です。次に、 'join l'を実行します。SELECT l.name FROM users_locations AS ul JOIN locations AS l ON l.id = ul.location WHERE ul.user = 25'これは、ユーザーがいたすべての場所を生成します割り当てられた。 – fyrye

+0

シンプル。コンマで区切って別の場所を追加しないでください。正規化を参照してください。 – Strawberry

答えて

0

解決されるだろう。すべての場所をユーザーIDで配列に選択し、inarray()機能を使用してチェックを行います。 必要に応じて場所を簡単に追加したり削除したりすることができます。 アイデアを持って前進してくれてありがとう:)

0

explode()を使用すると、文字列を針で配列に変換できます。あなたのケースでは、私がユーザーID &位置を保持するための新しいテーブルを作成し を,

$pizza = "piece1,piece2,piece3,piece4,piece5,piece6"; 
$pieces = explode(",", $pizza); 
関連する問題