$query = $db->query("SELECT *
FROM users
ORDER BY username ASC");
while($user = $query->fetch_object()) {
$if_inside = $db->query("SELECT member_id
FROM project_members
WHERE member_id='$user->id'
UNION
SELECT admin_id
FROM project_admins
WHERE admin_id='$user->id'")->num_rows;
if($if_inside < 1) { // if not already in project
?>
<option value="<?php echo $user->username; ?>">
<?php echo $user->username; ?> </option>
<?php
}
}
?>
我将如何优化上面的代码?如果我的数据库中有 100 个用户,那么它将查询 100 次,而且它已经很慢了(我有 2 个用户)
有没有更好的方法来检查用户是否已经在项目中?
最佳答案
我想这就是您要找的:
$sql = $db->query("Select distinct username from users where username not in (select member_id from project_members union select admin_id from project_admins) order by username ASC");
$queryResult = $sql->fetch_all();
foreach($queryResult as $username) {
echo "<option value='" . $username . "'>" . $username . "</option>";
}
针对所有不在 project_members 或 project_admins 中的用户名对数据库进行一次点击,然后 foreach 显示结果。
关于php - 如何避免每次循环运行时都进行查询? (优化代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25006687/