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

标签 sql prepared-statement fetch multi-table

哦哦好吧。我有两个表 client 和 users。两者都有 AUTO_INCRMENT id,但客户端表有 credid-column,这是外键和对用户表 id 的引用。

我想准备一个 PHP PDO 语句,从客户端表中获取所有列,并仅从用户表中获取用户名列,其中客户端表的列 credid = :var 和用户表的列 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);

然后像这样

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

    }

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

我也尝试过这样的事情:

    SELECT client.*,users.username FROM client,users WHERE client.credid =users.id = :id

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

最佳答案

您需要使用加入:

SELECT c.*, u.username
FROM   client c
JOIN   users u ON u.id = c.credid
WHERE  credid = :id

关于sql - mysql - 从一个表中选择所有内容,并从另一个表中选择一列,其中找到 $var,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25721054/

相关文章:

sql - 使用两列创建索引和在两列上创建单独索引之间的区别

php - 只能在准备语句 PHP 中添加两个值

java - 不支持游标类型/并发组合

javascript - 如何使用 async/await 从 fetch 函数保存数据

php - mysql_fetch_array 中的无效 MySQL 参数

sql - 通过raster2pgsql导入栅格,但出现sql语法错误

mysql - 如何使用 join 和 group by 为同一列检索具有不同计算值的 sql 结果?

sql - Rails has_many 关联记录满足条件

java - 将大字符串转换为 bigInteger 并将其传递给准备好的语句

javascript - React Setstate 在 JSON 化后使我的状态项未定义