php - SQL 连接返回重复结果,而不是数据库中反射(reflect)的结果

标签 php mysql

我有三个表 user、product 和 userproduct。

User 具有用户个人资料信息,product 具有主键,userproduct 有两个标题,即 UserId 和 ProductId,我用它们来匹配哪个用户拥有哪个产品。

userproduct 按以下方式设置:

----------------------------------
| UserId (int) | ProductId (int) |
----------------------------------
| 1           | 1                |
----------------------------------
| 1           | 2                |
----------------------------------

我的PHP代码如下:

$userId = 1;

$stmt = $pdo->prepare('SELECT * FROM product join userproduct on product.ProductId = userproduct.UserId where UserId = ?');
$stmt->execute([$userId]);
$products = $stmt->fetchAll();

foreach ($products as $productsOwned)
{
    echo $productsOwned['ProductName'];
}

我假设这会回显Product1,Product2。但是,它会回显Product1,Product1。

我已经检查了我的数据库几次,一切似乎都按顺序进行,但由于我仍在学习 SQL,我认为我在那里犯了一个错误。任何指导将不胜感激。

最佳答案

你的SQL是错误的,如果你想加入这个表并获取所有用户产品,你可以这样做:

SELECT userproduct.UserId as userId, product.name as productName
FROM userproduct
JOIN product ON userproduct.ProductId = product.ProductId
WHERE userproduct.UserID = {$userId};

关于php - SQL 连接返回重复结果,而不是数据库中反射(reflect)的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42045769/

相关文章:

php - 有没有办法在撤销方法时查看正在执行的代码?

php - 最佳速度的表设计 ~1M 行

MYSQL:根据集合中其他字段的值设置型号

php - 使用 PHP 可读的哈希导航时,如何向 url 添加参数?

php - 使用php动态创建表单元素

php - 浮点图未显示

MySQL 按月分组不起作用

php - PDO 多选查询

php - 如何查找哪个文件具有将数据插入magento表中的代码

php - 从子类 php 和 parent 关键字访问 parents 变量?