如何仅针对匹配记录显示来自两个表的数据
How to show data from two tables only for matching record
我有两个 table。
第一个存储名为“users”的用户信息
| user | password | email |
|:---- |:--------:| ---------------:|
| user1 | pass1 | email@email.com |
| user2 | pass1 | email@email.com |
| user3 | pass1 | email@email.com |
和第二个“材料”,它存储有关每个用户拥有什么的信息
| user | lumberjack| farmer etc |
|:---- |:---------:| -----------------:|
| user1| 10 | 20 |
| user2| 20 | 50 |
| user3| 30 | 40 |
我想从第 2 个 table 获取数据,但仅针对特定用户。
我试过了,但它显示了两个 table 中每个用户的资料。我想要做的是显示第二行 table 中与记录的用户名相同的一行。
例如,如果用户 1 已登录,我想显示他有 10 个伐木工人和 20 个农场,如果用户 2 已登录,则有 20 个伐木工人和 50 个农场等
$sql = "SELECT lumberjack, stonemanson, farmer FROM materials JOIN users ON materials.user = users.user ";}
$res = $conn->query($sql);
if ($res->num_rows > 0)
{
while ($row = $res->fetch_assoc())
{
echo "Lumberjack: " . $row["lumberjack"]. " Stonemanson: " . $row["stonemanson"]. " Farmer: " . $row["farmer"]. "<br>";
}
}
关于您的查询,向其添加 WHERE 子句。
例如如果用户id是26 SQL查询将是
SELECT lumberjack, stonemanson, farmer FROM materials JOIN users ON materials.user = users.user WHERE users.user=26
并检查你的 table 结构,如果你不需要来自 用户的任何数据 table 那么你不应该使用 加入
这也能正常工作,而且会更快
SELECT lumberjack, stonemanson, farmer FROM materials WHERE materials.user =26
注意:使用 query() 会使您的代码容易受到 SQL 注入
您应该使用 Mysqli 或 PDO 准备语句。
Whosebug 对此有很多答案。所以在你解决了你的问题之后,然后开始阅读 SQL injection and use of PDO or Mysqli prepared statement
我有两个 table。 第一个存储名为“users”的用户信息
| user | password | email |
|:---- |:--------:| ---------------:|
| user1 | pass1 | email@email.com |
| user2 | pass1 | email@email.com |
| user3 | pass1 | email@email.com |
和第二个“材料”,它存储有关每个用户拥有什么的信息
| user | lumberjack| farmer etc |
|:---- |:---------:| -----------------:|
| user1| 10 | 20 |
| user2| 20 | 50 |
| user3| 30 | 40 |
我想从第 2 个 table 获取数据,但仅针对特定用户。
我试过了,但它显示了两个 table 中每个用户的资料。我想要做的是显示第二行 table 中与记录的用户名相同的一行。 例如,如果用户 1 已登录,我想显示他有 10 个伐木工人和 20 个农场,如果用户 2 已登录,则有 20 个伐木工人和 50 个农场等
$sql = "SELECT lumberjack, stonemanson, farmer FROM materials JOIN users ON materials.user = users.user ";}
$res = $conn->query($sql);
if ($res->num_rows > 0)
{
while ($row = $res->fetch_assoc())
{
echo "Lumberjack: " . $row["lumberjack"]. " Stonemanson: " . $row["stonemanson"]. " Farmer: " . $row["farmer"]. "<br>";
}
}
关于您的查询,向其添加 WHERE 子句。
例如如果用户id是26 SQL查询将是
SELECT lumberjack, stonemanson, farmer FROM materials JOIN users ON materials.user = users.user WHERE users.user=26
并检查你的 table 结构,如果你不需要来自 用户的任何数据 table 那么你不应该使用 加入
这也能正常工作,而且会更快
SELECT lumberjack, stonemanson, farmer FROM materials WHERE materials.user =26
注意:使用 query() 会使您的代码容易受到 SQL 注入 您应该使用 Mysqli 或 PDO 准备语句。
Whosebug 对此有很多答案。所以在你解决了你的问题之后,然后开始阅读 SQL injection and use of PDO or Mysqli prepared statement