我的网站上有投票系统,我想检查用户是否投了赞成票、反对票。 减少数量。在查询中,我从投票表中选择了包含 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 循环,有人可以帮助我吗...?
最佳答案
这可以在一个查询中完成,以确定用户是否已投票给答案。不需要初步查询来获得用户投票,也不需要在获取循环中进行数组比较。
对 votes
上的子查询使用 LEFT JOIN
并在其 WHERE
子句中提供用户 ID。如果 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}
关于php - 如何在 mysql_query 返回的数组中找到一些值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11431903/