Если запрос вернул 0 строк, то из функции вернётся false и $res->fetch_assoc() выдаст ошибку. Надо проверять, что вернулось перед использованием.
В остальном, вроде, всё нормально.
Для начала определиться, что такое "онлайн на сайте". Если я зашёл на сайт, а потом открыл вкладку с другим сайтом или вообще спать пошёл, оставив комп включённым - я "онлайн" или нет?
POLOVIN, Решение будет работать, если id монотонно возрастают по времени и гарантировано нет ситуаций, когда у строки с большим id меньшее значение date, чем у строки с меньшим id.
Aves, Ускорить то можно, но это уже не будет чистой комбинаторикой. Для этого надо отсеивать варианты как можно раньше.
Скажем, если выбросить из набора (1, ..., 20) два числа (одно пропущенное и одно в центральном кружке, то сумма оставшихся должна делиться на 3. Записав три из оставшихся чисел в кружки средней окружности сразу получаем ещё одно число. Так можно построить алгоритм решения конкретно под эту задачу.
prrrrrrr, Единственный вариант - ключи лежат на другом компьютере. Значит придётся взломать и его.
К тому же по зашифрованным в БД данным не будет работать ни поиск, ни индексация, что опять же ограничивает сферу применения.
slava kk, Без разницы, если хотите включить свой корневой сертификат в браузеры, то требования одни и те же.
Если только внутри организации, то, естественно, всё гораздо проще. Поднимаете внутренний центр сертификатов, раздаёте его корневой сертификат через домен или другое ПО управления инфраструктурой и выдаёте сертификаты через свой центр.
Если запрос вернул 0 строк, то из функции вернётся false и $res->fetch_assoc() выдаст ошибку. Надо проверять, что вернулось перед использованием.
В остальном, вроде, всё нормально.