私は自分のウェブサイト用の友人システムを構築しようとしています。使用して1つの変数から複数の値を取得する方法は?
INSERT INTO friendship
VALUES
(1, 2),
(1, 3),
(1, 5);
私は(この例では、ID 1)利用者の全てを取得することができています友人のIDS:
CREAT TABLE users (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) NOT NULL
) Engine=InnoDB;
CREATE TABLE friendship (
member1 INT UNSIGNED NOT NULL, -- user's ID
member2 INT UNSIGNED NOT NULL, -- friend's ID
FOREIGN KEY (member1) REFERENCES users (id),
FOREIGN KEY (member2) REFERENCES users (id),
UNIQE (member1, member2)
) Engine=InnoDB;
サンプル友情データ:テーブル構造は次のようなものに設定されています以下:
$query = mysql_query("SELECT * FROM friendship_table WHERE member1='1'");
while($row = mysql_fetch_assoc($query)) {
$memberid = $row['member2'];
}
私が今したいことは、友人の名前を取得することです。この例では、memberid(表のmember2列)変数の値は2,3および5です。 if/elseif型のステートメントを実行して、そのメンバーIDを確認します。種類のこのような:
if($memberid == "2") {
echo "Bob is your friend";
} elseif($memberid == "3") {
echo "Joe is your friend";
} elseif($memberid == "3" && $memberid == "2") {
//This line is the problem, the variable has multiple values in it (2,3,5) so I think it doesn't understand that and just uses one value
echo "Bob and Joe are your friends!";
} else {
//...
}
だから、問題はその変数がそれに割り当てられた2つの特定の値を持っている場合、私は確認したいとき、それはその値のすべてをチェックしないということです。どのようにしてすべての値(2,3,5)をチェックできるようにすることができますか?
を使用して、より良い方法でこの仕事を行うことができ、あなたはしたくありませんPHPコード内のユーザー名をハードコードします。それはより良いSQLクエリで解決されるのが最も良い問題です。その部分も見せてください。 – mario
@mario質問: "SELECT * FROM friendship_table WHERE member1 = '1'" – randomphp
質問を更新して追加情報を追加してください。一般的に、コメントで返信するのではなく、あなたの投稿を更新することによって、明確化の要求に応えます。一つのこととして、コメントを読まなければ問題は理解できるはずです。別の例として、SOはQAとサイトであり、フォーラムではなく、コメントは意図されておらず(また、適切ではない)、議論のためのものでもありません。 – outis