选择Command&加入问题

时间:2013-04-17 06:00:05

标签: php select join login

我有两张桌子

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'...'”

希望有人可以帮助我。

4 个答案:

答案 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"

这是因为您正在比较两个表,需要声明选择两个表的哪些字段进行比较

注意您没有通过ASCDESC指明您要订购的内容,因此我假设您已将其存储在$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"