1

我的网站上有投票系统,我想检查用户是否赞成、反对。减少数量。我选择的查询的完整表包含 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 循环,有人可以帮我..吗?

4

1 回答 1

1

这可以在一个查询中完成,以确定用户是否为答案投票。无需初步查询即可获得用户投票,也无需在 fetch 循环内进行数组比较。

LEFT JOIN对子查询使用 avotes并在其WHERE子句中提供用户 ID。如果 的值为uservotes.voteNULL,则用户没有投票给这个答案。否则,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}
于 2012-07-11T14:04:41.547 回答