mysql - 从一个表中选择所有表,从另一个表中选择一列,其中找到$ var

H3l*_*l1n 2 sql prepared-statement fetch multi-table

Ooooookay.我有两个表客户端和用户.两者都有AUTO_INCREMENT id但客户端表有credid-column whis是外键并且引用了users表的id.

我想准备一个PHP PDO语句,它从client-table中获取所有列,并且只从users-table获取username-column,其中client table的列credid =:var和user table的column id =:var

到目前为止,我有类似的东西,它不起作用

$userid = $_SESSION['id']; //echoes a number
    $STH = $DBH->prepare("SELECT * FROM client WHERE credid = :id AND username FROM users
    WHERE id = :id");
    $credentials = array(
        ':id' => $userid
    );
    $STH->execute($credentials);
Run Code Online (Sandbox Code Playgroud)

然后这样

    if ($STH->rowCount() > 0) {
        $result = $STH->fetch(PDO::FETCH_ASSOC);
        echo $result['columnfoo'];
        echo $result['anothercolumn'];
        echo etc.
        .
        .
        .

    }
Run Code Online (Sandbox Code Playgroud)

这返回有关sql语法的错误....

我也尝试过这样的事情:

    SELECT client.*,users.username FROM client,users WHERE client.credid =users.id = :id
Run Code Online (Sandbox Code Playgroud)

返回没有错误但不返回任何数据......我应该如何构建我准备好的查询?

Mur*_*nik 5

你需要使用join:

SELECT c.*, u.username
FROM   client c
JOIN   users u ON u.id = c.credid
WHERE  credid = :id
Run Code Online (Sandbox Code Playgroud)