2016-06-16 37 views
2

PHP子查询

  1. 组识别符号
  2. 组名
  3. 有效性

用户表

  1. 组名
  2. 用户名
  3. 密码

    $c=date(y-m-d); 
    
    $a=$_REQUEST['user']; 
    
    $b=$_REQUEST['pass']; 
    
    $c=date(y-m-d); 
    
    $sql="SELECT username,password,validity FROM usertable,groups WHERE username='$a' AND password='$b' AND validity > (select validity,groupname from groups where groups.groupname = usertable.groupname)"; 
    

如何编写子查询在PHP从usertablevaliditygroups基于groupnameusertable相关username检查usernamepassoword

回答

1

我认为你正在寻找这个。使用加入

$sql = "SELECT username,password,validity 
FROM usertable a join groups b on a.groupname=b.groupname 
WHERE username='$a' AND password='$b' 
AND validity > '$c'" 
+0

对于前.....我有一个组名'ABCDE',它的有效性是'2016-07-15'在组表中.... 。我有用户名='XYZ'和密码='123'其中usernam e属于groupname'ABCDE'..在查询我必须检查用户名,密码从usertable和有效性的特定groupname从组表... – Raahul

+0

以上查询是做同样的。 – Vinie

+0

正常工作... – Raahul

1

我认为这会抛出一个错误?当将一列与一个子选择进行比较时,双方应该具有相同的数量和相同类型的列。

在这里,您比较validity > validity,groupname这是无效的

"SELECT username,password,validity 
FROM usertable,groups 
WHERE username='$a' AND password='$b' 
    AND validity > (select validity from groups where groups.groupname = usertable.groupname)" 

注意,如果子查询返回多于一个行,你应该使用聚合函数或东西来确定应返回的值,如MAX(validity)

+0

对于前面.....我有一个groupname'ABCDE',它的有效性是'2016-07-15'在组表中.....我有username ='XYZ'和密码='123'其中用户名属于groupname'ABCDE'..在查询我必须检查用户名,密码从usertable和有效性的特定groupname从组表... – Raahul

0

我想你想根据用户所属的组找出用户的有效性。

$sql = "select u.username, u.password, g.validity from usertable u, groups g where u.groupname = g.groupname and u.username = '$a' and u.password = '$b'"; 
+0

对于前.....我有一个组名' ABCDE',它的有效期是'2016-07-15'在组表中.....我有用户名='XYZ'和密码='123',其中用户名属于groupname'ABCDE'..在查询我必须检查用户名,密码从usertable和该组的特定组名称的有效性... – Raahul