Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Drupal按配置文件名和姓氏查询搜索用户_Sql_Drupal_Search_Profile - Fatal编程技术网

Sql Drupal按配置文件名和姓氏查询搜索用户

Sql Drupal按配置文件名和姓氏查询搜索用户,sql,drupal,search,profile,Sql,Drupal,Search,Profile,我正在编写一个模块,该模块只允许通过提供名字和姓氏(没有电子邮件地址或用户名)快速添加用户。这些用户就像“幽灵”,只是暂时使用。 在添加用户模块之前,需要检查系统中是否已经存在同名和姓氏相同的用户,以避免创建多个同名的重影用户。 换句话说,我需要一个sql查询来按姓和名筛选用户。 到目前为止,我能够提出这样一个问题: $sql = "SELECT DISTINCT u.uid AS uid FROM users u INNER JOIN profile_values pv ON u.uid =

我正在编写一个模块,该模块只允许通过提供名字和姓氏(没有电子邮件地址或用户名)快速添加用户。这些用户就像“幽灵”,只是暂时使用。 在添加用户模块之前,需要检查系统中是否已经存在同名和姓氏相同的用户,以避免创建多个同名的重影用户。 换句话说,我需要一个sql查询来按姓和名筛选用户。 到目前为止,我能够提出这样一个问题:

$sql = "SELECT DISTINCT u.uid AS uid FROM users u INNER JOIN profile_values pv ON u.uid = pv.uid INNER JOIN profile_fields pf ON pv.fid = pf.fid "
                ."WHERE pf.fid = 2 AND pv.value = '%s'";
            $uid = db_fetch_object(db_query("$sql", $ln))->uid;
此查询不够好,因为它仅通过匹配lastname来查找用户。我不是sql专家,但我不知道如何连接表以缩小结果范围,以便匹配firstname和lastname: 像这样的

WHERE pf.fid = 2 AND pv.value = 'LASTNAME' AND pf.fid = 1 AND pv.value = 'FIRSTNAME';
在我的个人资料字段表中,我有: fid=2->lastname fid=1->firstname


最后一个WHERE子句不起作用。我希望熟悉Drupal系统中用户配置文件表关系的人知道我的要求。

您需要使用不同的别名加入两次。比如:

$sql = "SELECT DISTINCT u.uid AS uid FROM {users} u 
INNER JOIN {profile_values} pv ON u.uid = pv.uid 
INNER JOIN {profile_fields} pf ON pv.fid = pf.fid
INNER JOIN {profile_values} pv2 ON u.uid = pv2.uid 
INNER JOIN {profile_fields} pf2 ON pv2.fid = pf2.fid
WHERE pf.fid = 2 
AND pv.value = '%s'
AND pf2.fid = 1 
AND pv2.value = '%s'";

 $uid = db_fetch_object(db_query("$sql", array($ln, $fn)))->uid;

同样,对于drupal,您应该在表名周围放置{}。

您很好。它就像一个符咒,如此干净。我试图看看Views模块将如何构造它,但它产生了很多脏东西;-)对我知道{}。刚从我的查询生成器中粘贴了它。