1

これが私の問題です。3つのテーブルがあり、それぞれに重複する情報(具体的にはユーザー名)があります。ユーザー名の行がすべてのテーブルで同じ名前になっているわけではないことを除いて。ユーザー名はユーザーに固有であるため、ユーザー名に基づいてユーザーに関する他のすべての情報を取得することは理にかなっています。これが私が持っているものです。(最初の関数はクエリを返し、2番目の関数は配列内の情報を返します(またはとにかくそうなるはずです)。

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を使用するには、次の例のスニップコードを使用します。

$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 に答える