PHP MYSQL Определить, добавлена ли новая строка
Любая идея, как я могу определить, есть ли новый клиент, добавленный в мою базу данных.
Я думал об идентификации через поле date_added.
id client_name date_added
---------------------------------
1 ABC 2013-01-02
2 XYZ 2013-01-03
3 EFG 2013-01-02
4 HIJ 2013-01-05
Как видите, новый клиент добавил HIJ 2013-01-05.
Я искал с таким результатом:
Client List
Total NO: 4
New Client
Total No: 1
Client Name: HIJ
4 ответа
Трудно сказать, но на основании вашего комментария ... моя контрольная дата - интервал в 1 месяц... вы можете искать что-то вроде этого
SELECT id, client_name, new_count, total_count
FROM
(
SELECT id, client_name
FROM clients
WHERE date_added BETWEEN CURDATE() - INTERVAL 1 MONTH AND CURDATE()
) c CROSS JOIN
(
SELECT
(
SELECT COUNT(*) new_count
FROM clients
WHERE date_added BETWEEN CURDATE() - INTERVAL 1 MONTH AND CURDATE()
) new_count,
(
SELECT COUNT(*) total_count
FROM clients
) total_count
) t
Очевидно, вы можете легко изменить CURDATE()
с любой другой контрольной датой в прошлом в этом запросе, и вы получите результаты для этой даты.
Предположим, что у вас есть следующие данные образца
+ ------ + ------------- + ------------ + | id | имя_клиента | date_added | +------+-------------+------------+ | 1 | ABC | 2013-05-13 | | 2 | XYZ | 2013-06-13 | | 3 | EFG | 2013-06-13 | | 4 | HIJ | 2013-08-11 | +------+-------------+------------+
и сегодня 2013-08-13
тогда результат запроса будет
+ ------ + ------------- + ----------- + ------------- + | id | имя_клиента | new_count | total_count | +------+-------------+-----------+-------------+ | 4 | HIJ | 1 | 4 | +------+-------------+-----------+-------------+
Добавить поле new
к таблице, по умолчанию это 1, при загрузке страницы используйте это для выбора и установите его в 0, чтобы указать, что он больше не новый.
Это зависит от того, что вы считаете НОВЫМ. Вы должны определить, с чем вы собираетесь сравнивать записи (контрольная дата). Определив его, вы можете использовать запрос, подобный следующему:
SELECT * FROM клиента, ГДЕ date_added >= '$date'
где $ date - это ссылочная дата.
На вашей веб-странице или в PHP-скрипте вы можете вспомнить самое высокое значение идентификатора, которое вы видели раньше. Или самая высокая отметка времени (лучше, чем дата), которую вы видели раньше.
Я предпочитаю идентификаторы или номера версий для вещей, связанных с параллелизмом (блокировка, поиск последней версии и т. Д.) - поскольку они должны быть определены как восходящие, не могут подвергаться коллизиям с одинаковыми миллисекундами и более эффективны.
Я предполагаю, что вы будете хранить "состояние" вашего приложения (относительно того, что видел пользователь) в скрытых полях формы или что-то подобное. Затем он будет отслеживать "последний раз увиденный" и позволит вам определить "недавно добавленный" с момента последнего просмотра страницы.
Если вы ожидаете идентифицировать вновь добавленное при переходе с другой страницы или при входе в приложение, вам нужно вместо этого сохранить "состояние" в базе данных.