使用 PHP 和 MySQL 限制每个用户的预订数量
Limiting number of reservations per user with PHP and MySQL
我的用户可以创建预订,但我想限制它 - 假设一个用户最多可以进行 5 个状态为“待定”的预订,在管理员批准预订并将待定状态更改为批准后,用户可以再订。
用户进行预订时默认给出待定状态。我想要实现的是,如果预订 table 在同一个 user_id 下有 5 个待定预订,则用户无法进行新预订,因此他会收到无法进行更多预订的警报.
我的问题是,我怎样才能做到这一点?是通过使用 COUNT,还是应该为它创建一个触发器?如果您能提供有关如何处理此问题的任何建议,我们将不胜感激。
最简单的方法是在处理用户输入时执行另一个查询。新查询将执行类似于 SELECT COUNT(*) FROM reservations WHERE user_id=? AND status='pending'
的操作。然后您可以签入 PHP 此查询的结果。如果它大于或等于您施加的限制,则向用户显示一条消息,通知他们他们已达到最大待处理预订,他们需要等待。
伪代码:
如果请求新的预订
准备一个语句来检查当前用户的待定预订数。
执行并获取结果
如果计数 >= 5
4.1。停止处理请求并向用户显示消息
其他
5.1。继续插入新预订。
我的用户可以创建预订,但我想限制它 - 假设一个用户最多可以进行 5 个状态为“待定”的预订,在管理员批准预订并将待定状态更改为批准后,用户可以再订。
用户进行预订时默认给出待定状态。我想要实现的是,如果预订 table 在同一个 user_id 下有 5 个待定预订,则用户无法进行新预订,因此他会收到无法进行更多预订的警报.
我的问题是,我怎样才能做到这一点?是通过使用 COUNT,还是应该为它创建一个触发器?如果您能提供有关如何处理此问题的任何建议,我们将不胜感激。
最简单的方法是在处理用户输入时执行另一个查询。新查询将执行类似于 SELECT COUNT(*) FROM reservations WHERE user_id=? AND status='pending'
的操作。然后您可以签入 PHP 此查询的结果。如果它大于或等于您施加的限制,则向用户显示一条消息,通知他们他们已达到最大待处理预订,他们需要等待。
伪代码:
如果请求新的预订
准备一个语句来检查当前用户的待定预订数。
执行并获取结果
如果计数 >= 5
4.1。停止处理请求并向用户显示消息
其他
5.1。继续插入新预订。