2

私は2つのテーブルを持っています

1: USERS

user_id | user_state | user_email

2: CONTACTS

contact_id | contact_name | contact_state | contact_email | contact_info

私がやりたいことは、「user_state」(ログインしているユーザーの状態) が contact_state と等しいすべての「CONTACTS」データを選択でエコーすることです。

"SELECT * FROM contacts
INNER JOIN users
ON contact_state = ".$row_userinfo['user_state']."
WHERE contact_state = ".$row_userinfo["user_state"]." 
ORDER BY contact_name $limit");
?> 

私が問題を抱えているのは、ログインしているユーザーの状態 (user_state) に一致するデータを表示するだけではないことです。

そして、上記のコード(私が望むように動作することが正しいかどうかはわかりません)を使用すると、「「where句」の不明な列「...」」が表示されます

うまくいけば、誰かが私を助けることができます。

4

4 に答える 4

1

このクエリを試してください..

("SELECT contacts.*
FROM users, contacts
WHERE users.user_state = contacts.contact_state AND user_id = '".$_SESSION['id']."'");

これ$_SESSION['id']が現在のユーザーのログイン ID です。

于 2013-04-17T06:04:31.607 に答える
0

JOIN条項の条件を確認してください

("SELECT * FROM contacts
INNER JOIN users ON contact_state = user_state
WHERE contact_state = ".$row_userinfo["user_state"]." 
ORDER BY contact_name $limit");
于 2013-04-17T06:02:12.637 に答える
0

ON句を次のように変更するだけです

SELECT * FROM `users` a
JOIN `contacts` b
ON a.`user_state` = b.`contact_state`
WHERE a.`user_state` = '".$row_userinfo["user_state"]."' 
ORDER BY b.`contact_name` $limit"

これは、2 つのテーブルを比較しており、2 つのテーブルのどのフィールドを比較対象として選択するかを宣言する必要があるためです。

注文したいものを示していないことに注意ASCしてください。またはDESC、これを$limit変数に既に保存していると思います

于 2013-04-17T06:02:40.873 に答える
0

これを試して

"SELECT c.* FROM contacts c
 JOIN users u
ON c.contact_state = u.user_state
WHERE c.contact_state = ".$row_userinfo["user_state"]." 
ORDER BY c.contact_name $limit"
于 2013-04-17T06:04:30.847 に答える