繁体   English   中英

如何回显具有相同ID的多行

[英]How to echo more than one row with same id

我有一个数据库,它允许用户 id 出现用户想要的次数,例如 id = 1902 属于这个 id 的项目是鱼、面包、牛奶。 同一用户在另一行 id = 1902 上具有相同的 id,属于该 id 行的项目是胡椒、垫子、鼠标。

我想尝试 output 用户 ID 及其所有项目,但不知道要使用的代码。

<?php
$xyttt = $_SESSION['email'];

$sql = "SELECT id FROM users where username = '$xyttt'";

$result = mysqli_query($db, $sql);

// fetch the resulting rows as an array
$investment = mysqli_fetch_all($result, MYSQLI_ASSOC);
foreach($investment as $invest){ 
    // echo ($invest['id']); 
    $uidbb = ($invest['id']);
} 

// free the $result from memory (good practise)
mysqli_free_result($result);

$uidbb = ($invest['id']);

$sql = "SELECT * FROM investment where userid = '$uidb'";

$result = mysqli_query($db, $sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["amount1"]. " " . $row["status"]. "<br>";
    }
} else {
    echo "0 results";
}

$conn->close();
// free the $result from memory (good practise)
mysqli_free_result($result);

?>

我使用了这段代码,但它正在获取数据库的所有行,包括其他用户的 id,但我希望它只获取在表上出现多次的特定 id 的所有行。

您可以从一个请求中获取所有项目和用户 ID SQL

SELECT * FROM investment where userid = (SELECT id FROM users WHERE username = ?)

或者

SELECT 
* 
FROM 
    investment INV
INNER JOIN
    users U ON U.id = INV.userid
WHERE U.username = ?

对于 select 自定义行,您必须将( * )替换为表中的所需值

我不太了解您的问题:/

您可以使用内部联接在一个查询中执行此操作,如下所示:

SELECT 
    * 
FROM 
    investment 
INNER JOIN
    users ON users.id = investment.userid
WHERE users.username = ?

这将从具有您提供的用户名的investment中获取所有记录。

您可以在此处阅读有关内部联接的更多信息: https://www.mysqltutorial.org/mysql-inner-join.aspx/

笔记

如您所见,我和其他答案都使用? 而不是带有用户名的变量。 那是因为我们使用参数化的准备好的语句,而不是直接将数据注入到查询中。 我建议您也通读一遍,因为这是在查询中使用动态数据的推荐方式(并且在处理外部数据时是必要的)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM