SQL, это плохо, чтобы concat() данные журнала в поле длинного текста?
Я строю свою собственную систему аутентификации. Прямо сейчас у меня есть настройки базы данных для регистрации каждой метки времени входа в систему:
$query = 'UPDATE `users` SET login_log = concat(login_log, ?) WHERE userKey = ? LIMIT 1 ';
$vars = array(time().',', $this->userKey);
$QH = $this->DBH->prepare($query);
$QH->execute($vars);
Это плохо использовать concat()
регистрировать данные в longtext
поле?
Должен ли я делать это по-другому?
Есть ли какие-либо проблемы, с которыми я мог бы столкнуться в будущем с этим методом?
1 ответ
Единственное, о чем я могу подумать, это то, что, если нет необходимости в бизнесе иметь только одно поле login_log, нет смысла объединять, особенно если вы хотите выполнить ограничение по временной части в дальнейшем... перед тем, как получить требуемый компонент time(), необходимо проанализировать весь остальной текст журнала (здесь, в другой раз).
Вы могли бы намного проще нормализовать свои данные и добавить автоинкремент int PK, а затем поле userKey и поле login_LogDate. После каждого входа в систему вы можете вставить в таблицу пользователей имя пользователя и текущее время. Вы можете легко найти минимальный, максимальный, верхний N-й логин и т. Д. Гораздо проще, чем разделить его.