PHP MySQLi检查用户是否投票,其他用户也可以投票

时间:2018-07-28 20:57:51

标签: php mysql

只要有1票,我就可以正常工作(我是一个相对较新的编码员)。如何让其他用户投票?下面的代码:。

SELECT 
    b.id,
    b.image_1_file,
    b.your_name,
    b.your_votes,
    b.image_2_file,
    b.battling_with_name,
    b.battling_with_votes
FROM
    battles b left outer join
    votes v 
    on 
        b.id = v.battle_id 
where
    v.battle_id is null
order by 
    rand()
limit 1

我尝试:

SELECT 
    b.id,
    b.image_1_file,
    b.your_name,
    b.your_votes,
    b.image_2_file,
    b.battling_with_name,
    b.battling_with_votes
FROM 
    battles b
WHERE 
    b.id NOT IN (
        SELECT 
            v.battle_id
        FROM 
            votes v 
        WHERE
            v.voters_id != '$myid'
    ) 
order by
    rand()

当然,后者只会寻找b.id

其他用户有一个id变量:$my_id 我不希望成员投票后再次看到该图像。

非常感谢您的帮助,祝您生活愉快!

我的表结构是:

我要投票的图像表:

id                  int(10) unsigned    NO  PRI     auto_increment  
image_1_file            varchar(40) NO              
image_2_file            varchar(40) NO              
your_name           varchar(50) NO              
your_votes          int(10) NO      0   
battlingwithname    varchar(15) NO              
battlingwithvotes   int(10) NO      0   

我的投票(已存储投票)表:

id                  int(10) unsigned    NO  PRI     auto_increment  
battle_id           int(10) unsigned    NO              
vote_type           tinyint(1) unsigned NO              
voters_id           varchar(30)  

1 个答案:

答案 0 :(得分:0)

只需使用not in运算符,您就不会忽略那些已经投票的投影ID,因此您必须使用not in来选择那些投票的ID并从投影中删除,请注意:另一个运算符存在也可以使用,但我不在查询中使用

SELECT 
    b.id,
    b.image_1_file,
    b.your_name,
    b.your_votes,
    b.image_2_file,
    b.battling_with_name,
    b.battling_with_votes
FROM
    battles b 
where b.id not in( select v.battle_id from votes v)