Đặt bí danh cho một trong hoặc cả hai trường để chúng khớp với khóa một cách khôn ngoan:
$sql1 = "SELECT modname AS module FROM users_modules WHERE email='$email'";
Bây giờ có một khóa của module
thay vì modname
.
Bạn có thể sử dụng array_diff
để tìm sự khác biệt giữa các mảng miễn là chúng có cấu trúc tương tự. Trong trường hợp của bạn, điều này sẽ xóa hai khóa khác khỏi truy vấn DB thứ hai của bạn.
Ví dụ:
$sql1 = "SELECT modname AS module FROM users_modules WHERE email='$email'";
$result1 = $conn->query($sql1);
while ($row = $result1->fetch_assoc()){
$indMods[] = $row;
}
$sql2 = "SELECT module FROM modules WHERE level = '$level'";
$result2 = $conn->query($sql2);
while ($row2 = $result2 -> fetch_assoc()){
$allMods[] = $row2;
}
$difference = array_diff($indMods, $allMods);
Tài liệu cho array_diff
của PHP : http://php.net/manual/en/ Chức năng.array- diff.php
Lưu ý rằng có nhiều cách để làm điều này. Đây chỉ là một.