1

这是我的问题:我有 3 个表,每个表都有重叠的信息(特别是用户名)。除了用户名行在每个表中的名称不同。因为用户名是特定于用户的,所以根据用户名获取有关用户的所有其他信息是有意义的。这就是我所拥有的。(第一个函数返回查询,第二个函数返回数组中的信息(或者应该是,无论如何)。

function get_user_by_id($id) {
    global $connection;
    $query = "SELECT * FROM ownerOrganization, owner, queue_acl";
    $query .=" WHERE owner.ownerId=ownerOrganization.ownerId";
    $query .=" AND owner.ownerId=queue_acl.user_id";
    $query .= " AND owner.ownerId ='{$id}'";
    $result_set = mysql_query($query);
    confirm_query($result_set);
    if ($user = mysql_fetch_array($result_set)) {
        return $user;
    } else {
        return NULL;
    }
}

function get_user_id() {
    if (isset($_GET['ownerId'])) {
        return get_user_by_id($_GET['ownerId']); 
    } 
}

但是当我在另一个页面上做类似的事情时$sel_user = get_user_id();,它实际上并没有提取任何选定的用户信息......我认为这是因为我关于使用多个表的语法不正确。无论如何,任何输入将不胜感激。

4

2 回答 2

0

要使用 JOINS,请在示例中使用此 snipcode:

$query = "SELECT * FROM (ownerOrganization INNER JOIN owner ON owner.ownerId=ownerOrganization.ownerId) INNER JOIN queue_acl ON owner.ownerId=queue_acl.user_id";
$query .=" WHERE owner.ownerId ='{$id}'";

问候

于 2012-06-04T15:21:53.617 回答
0

我正在输入@MTranchant 所写的或多或少的内容。我建议重命名您的列以便于查询创作并避免混淆。例如,您的 ownerOrganization.ownerid 可以命名为 oo_ownerid,并且表中的其他列可以遵循该命名约定。

此外,您是否使用您知道存在的硬编码 $id 对数据库运行查询?

最后,在发送到下一页的查询字符串中,是否出现了一个类似于“&ownerId=”的 ownerId 参数?

于 2012-06-04T15:56:10.137 回答