How to restrict user to upload only three images in a month using PHP/MySQL

后端 未结 3 1937
长发绾君心
长发绾君心 2021-01-25 04:40

I am working on PHP. My question is How can restrict a user can upload only three images in a month.

My Mysql Database table --

CREATE TABLE `images`          


        
3条回答
  •  独厮守ぢ
    2021-01-25 05:16

    Consider the following...

    CREATE TABLE my_table
    (id SERIAL PRIMARY KEY
    ,user_id INT NOT NULL
    ,date DATE NOT NULL
    );
    
    INSERT INTO my_table (user_id,date)
    SELECT 1
         , '2018-01-01'
      FROM (SELECT 1) x
      LEFT
      JOIN (SELECT user_id
                 , DATE_FORMAT(date,'%Y-%m') ym
              FROM my_table
             GROUP
                BY user_id
                 , ym
            HAVING COUNT(*) >=3
           ) y
        ON y.user_id = 1
       AND y.ym = DATE_FORMAT('2018-01-01','%Y-%m')
     WHERE y.user_id IS NULL;
     LIMIT 1;
    
    SELECT * FROM my_table;
    +----+---------+------------+
    | id | user_id | date       |
    +----+---------+------------+
    |  1 |       1 | 2018-01-01 |
    +----+---------+------------+
    
    INSERT INTO my_table (user_id,date)
    SELECT 1
         , '2018-01-02'
      FROM (SELECT 1) x
      LEFT
      JOIN (SELECT user_id
                 , DATE_FORMAT(date,'%Y-%m') ym
              FROM my_table
             GROUP
                BY user_id
                 , ym
            HAVING COUNT(*) >=3
           ) y
        ON y.user_id = 1
       AND y.ym = DATE_FORMAT('2018-01-02','%Y-%m')
     WHERE y.user_id IS NULL
     LIMIT 1;
    
    SELECT * FROM my_table;
    +----+---------+------------+
    | id | user_id | date       |
    +----+---------+------------+
    |  1 |       1 | 2018-01-01 |
    |  2 |       1 | 2018-01-02 |
    +----+---------+------------+
    
    INSERT INTO my_table (user_id,date)
    SELECT 1
         , '2018-01-02'
      FROM (SELECT 1) x
      LEFT
      JOIN (SELECT user_id
                 , DATE_FORMAT(date,'%Y-%m') ym
              FROM my_table
             GROUP
                BY user_id
                 , ym
            HAVING COUNT(*) >=3
           ) y
        ON y.user_id = 1
       AND y.ym = DATE_FORMAT('2018-01-02','%Y-%m')
     WHERE y.user_id IS NULL
     LIMIT 1;
    Query OK, 1 row affected (0.00 sec)
    
    SELECT * FROM my_table;
    +----+---------+------------+
    | id | user_id | date       |
    +----+---------+------------+
    |  1 |       1 | 2018-01-01 |
    |  2 |       1 | 2018-01-02 |
    |  3 |       1 | 2018-01-02 |
    +----+---------+------------+
    
    INSERT INTO my_table (user_id,date)
    SELECT 1
         , '2018-01-03'
      FROM (SELECT 1) x
      LEFT
      JOIN (SELECT user_id
                 , DATE_FORMAT(date,'%Y-%m') ym
              FROM my_table
             GROUP
                BY user_id
                 , ym
            HAVING COUNT(*) >=3
           ) y
        ON y.user_id = 1
       AND y.ym = DATE_FORMAT('2018-01-03','%Y-%m')
     WHERE y.user_id IS NULL
     LIMIT 1;
    Query OK, 0 rows affected (0.00 sec)
    
    SELECT * FROM my_table;
    +----+---------+------------+
    | id | user_id | date       |
    +----+---------+------------+
    |  1 |       1 | 2018-01-01 |
    |  2 |       1 | 2018-01-02 |
    |  3 |       1 | 2018-01-02 |
    +----+---------+------------+
    
    INSERT INTO my_table (user_id,date)
    SELECT 1
         , '2018-02-03'
      FROM (SELECT 1) x
      LEFT
      JOIN (SELECT user_id
                 , DATE_FORMAT(date,'%Y-%m') ym
              FROM my_table
             GROUP
                BY user_id
                 , ym
            HAVING COUNT(*) >=3
           ) y
        ON y.user_id = 1
       AND y.ym = DATE_FORMAT('2018-02-03','%Y-%m')
     WHERE y.user_id IS NULL
     LIMIT 1;
    Query OK, 1 row affected (0.00 sec)
    
    SELECT * FROM my_table;
    +----+---------+------------+
    | id | user_id | date       |
    +----+---------+------------+
    |  1 |       1 | 2018-01-01 |
    |  2 |       1 | 2018-01-02 |
    |  3 |       1 | 2018-01-02 |
    |  4 |       1 | 2018-02-03 |
    +----+---------+------------+
    

提交回复
热议问题