创建嵌套 SQL 循环

Create a nested SQL loop

提问人:Parsa Yazdani 提问时间:4/17/2020 更新时间:4/17/2020 访问量:177

问:

如何使用 PHP 制作嵌套的 SQL 循环?

我正在尝试从行(主键)所在的表中输出所有 '。在该循环中,我想运行另一个循环以从表中输出,其中(不是主键)是第一个循环的输出。bundle_idpackagesuser$usernameblacklistaccessbundle_id

这是我的代码:

$sql = "SELECT bundle_id FROM packages WHERE user='" . $username . "'";
$result = mysqli_query($conn, $sql);
while($row = mysqli_fetch_assoc($result)){
    echo $row['bundle_id'];
    $sql = "SELECT blacklist FROM access WHERE bundle_id='" . $row['bundle_id'] . "'";
    $result = mysqli_query($conn, $sql);
    while($row = mysqli_fetch_assoc($result)){
        echo $row['blacklist'];
    }
}

我的代码的问题在于它只输出表中的第一行。access

php sql 循环 mysqli 嵌套循环

评论

2赞 brombeer 4/17/2020
如何防止 PHP 中的 SQL 注入?
0赞 Parsa Yazdani 4/17/2020
@kerbholz 当我更改它时,页面会无休止地加载并最终超时

答:

3赞 Lukas Eder 4/17/2020 #1

你在两个循环中重复使用相同的局部变量,这就是为什么你没有得到正确的结果。但更好的是,使用:$row$resultJOIN

SELECT a.blacklist
FROM access a
JOIN packages p ON a.bundle_id = p.bundle_id
WHERE p.user = ?

请注意,我正在使用绑定变量来防止 SQL 注入/语法错误等。

评论

0赞 Parsa Yazdani 4/17/2020
我将如何在我的脚本中实现它?
2赞 Lukas Eder 4/17/2020
@ParsaYazdani:见 php.net/manual/en/mysqli-stmt.bind-param.php