我有两张桌子
1: USERS
user_id |
user_state |
user_email
2: CONTACTS
contact_id |
contact_name |
contact_state |
contact_email |
contact_info
我想要做的是选择回显所有“CONTACTS”数据,其中“user_state”(登录用户状态)等于contact_state。
"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子句'中出现“Unknown column'...'”
希望有人可以帮助我。
答案 0 :(得分:1)
尝试此查询..
("SELECT contacts.*
FROM users, contacts
WHERE users.user_state = contacts.contact_state AND user_id = '".$_SESSION['id']."'");
此处$_SESSION['id']
是您当前的用户登录ID。
答案 1 :(得分: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");
答案 2 :(得分: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"
这是因为您正在比较两个表,需要声明选择两个表的哪些字段进行比较
注意您没有通过ASC
或DESC
指明您要订购的内容,因此我假设您已将其存储在$limit
变量中
答案 3 :(得分: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"