我的网站上有投票系统,我想检查用户是否已投票,投票或投票。 减少没有。我从查询表中选择了包含id等于用户id的完整表的查询 投票表的表模式为 答案表的表格架构为
$query=SELECT answer_id,user_id,vote FROM vote WHERE user_id='{$_SESSION["id"]}'
$result1=mysql_query($query);
$array=mysql_fetch_array($result1);
现在,当我获取问题的答案时,我想检查该用户是否已投票 如果在这个数组中找到了answer_id而不是我想找到投票的值吗?
代码是
$query1="SELECT * FROM answers WHERE question_id='{$question_id}'";//$question_id is id of question
$result=mysql_query($query1);
if($result){
While ($row=mysql_fetch_arrar($result)){
if(in_array($row["id"],$array){
echo $array["vote"];
}
}
}
我很困惑如何一起获取两个数组...?这个查询仅适用于第一个值,因为我没有在$ array中使用while循环,有人可以帮助我吗?
答案 0 :(得分:1)
这可以在一个查询中完成,以确定用户是否已投票给答案。无需初步查询来获取用户投票,或者在获取循环内进行数组比较。
对LEFT JOIN
上的子查询使用votes
,并在其WHERE
子句中提供userid。如果uservotes.vote
的值为NULL,则用户不投票支持此答案。否则,uservotes.vote
将包含用户的投票。
SELECT
answers.*,
uservotes.vote
FROM
answers
LEFT JOIN (
SELECT answer_id, vote FROM votes WHERE user_id = '{$_SESSION["id"]}'
) uservotes ON answers.id = uservotes.answer_id
WHERE answers.question_id = {$question_id}