如何在mysql_query返回的数组中找到一些值

时间:2012-07-11 11:43:13

标签: php mysql

我的网站上有投票系统,我想检查用户是否已投票,投票或投票。 减少没有。我从查询表中选择了包含id等于用户id的完整表的查询 投票表的表模式为Vote table 答案表的表格架构为answer table

$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循环,有人可以帮助我吗?

1 个答案:

答案 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}