首页 > 解决方案 > 无需在循环内查询即可获得多个结果

问题描述

我正在尝试改善图像的加载时间,并且需要更改代码。

我没有任何运气找到如何做到这一点,我不确定它是否可能。在下面的示例中,您可以看到我使用它来KEY匹配它,然后将它添加到一个长逗号分隔的字符串中。U_KEYFILE_PATH$allPaths

我知道我不应该在循环中使用查询,但我不知道如何改变它。

<?php
$sql = "SELECT * FROM test_users, image_uploads LIMIT 0, 27";
$result = mysqli_query($mysqli, $sql);

while($value = mysqli_fetch_array($result)) {
    $files_key = $value["KEY"];
    $allPaths = "";
    
    $inner_query = "SELECT * FROM additional_uploads WHERE U_KEY = '".$files_key;
    $inner_result = mysqli_query($mysqli, $inner_query);
    
    while ($row = mysqli_fetch_array($inner_result)) {
        $allpaths .= $row['FILE_PATH'].",";
    }

    // how do I get $allPaths without using a query inside the while loop?
}
?>

如果有人能告诉我如何$allPaths只使用一个查询而不是循环内的多个查询,如上所示,它可能会更快地加载图像。

这可能吗?

编辑

我试图使用建议的答案来理解问题,另外我也在其他论坛上寻找更多信息。但是我仍然找不到解决方案。由于我使用建议mysqli_fetch_array答案真的让我更加困惑。

标签: phpmysqlsql

解决方案


<?php
$inner_query = "SELECT * FROM additional_uploads";
$inner_result = mysqli_query($mysqli, $inner_query);
$rows = [];

while ($row = mysqli_fetch_array($inner_result)) {
    $rows[$row['U_KEY']] .= $row['FILE_PATH'].",";
}

$sql = "SELECT * FROM test_users, image_uploads LIMIT 0, 27";
$result = mysqli_query($mysqli, $sql);

while($value = mysqli_fetch_array($result)) {
    $files_key = $value["KEY"];
    $allPaths = $rows[$files_key];
}
?>

推荐阅读