INSERT INTO `YOUR_TABLE` (field1, field2)
SELECT 'value1', 'value2'
FROM DUAL
WHERE (SELECT COUNT(id) as cnt FROM `YOUR_TABLE` WHERE date = 'SELECTED_DATE') < 9;
-
DUAL - виртуальная таблица, используется, если не нужно делать выборку из реальной
-
value1 и
value2 нужно передать напрямую из скрипта
-
date - поле в которое записывается дата прихода на приём, нужно проверять в формате yyyy-mm-dd (т.е. без времени, просто день)
---
Я бы делал по следующему алгоритму:
- ввёл бы дополнительное поле request_id и сделал бы уникальным индексом
- перед запросом бы генерил уникальный ключ: $key = md5(rand(0, 999) . microtime() . date('yyyymmddHHiiss') . $personName);
- писал бы ключ внутри запроса в базу
- после проверял бы селектом, есть такой ключ в базе или нет
- если есть - запись прошла успешно
Нужно конечно ещё ловить ошибку на уникальность при инсерте и перегенеривать тогда ключ. Но я крайне сомневаюсь в возможности появления такой ситуации