php - 无需在循环内查询即可获得多个结果
问题描述
我正在尝试改善图像的加载时间,并且需要更改代码。
我没有任何运气找到如何做到这一点,我不确定它是否可能。在下面的示例中,您可以看到我使用它来KEY
匹配它,然后将它添加到一个长逗号分隔的字符串中。U_KEY
FILE_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
的答案真的让我更加困惑。
解决方案
<?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];
}
?>
推荐阅读
- reactjs - 防止本质上是动态的 TextField 自动填充
- google-cloud-platform - gsutil - 查找文件和文件夹
- c++ - 写 gpio_pin 时在“,”之前的预期主表达式
- c# - JSON.net 将离散元素反序列化为列表
- sql - 从连接表返回计算字符串的 PostgreSQL 函数
- java - 根据java中的嵌套顺序对字符串列表进行排序
- node.js - STRAPI:管理 ui 中的当前环境名称
- asp.net-core - 如何在 asp.net core web 应用程序中获取客户端计算机 windows 用户名
- java - java.lang.NoClassDefFoundError:解析失败:Lcom/stripe/android/stripe3ds2/service/StripeThreeDs2ServiceImpl;
- c++ - 如何将任何 DLL 链接到 Cmake 项目