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

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

最佳答案

这可以在一个查询中完成,以确定用户是否已投票给答案。不需要初步查询来获得用户投票,也不需要在获取循环中进行数组比较。

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/

相关文章:

PHP mysql 无法插入数据库并报错

php - Laravel 5 中的 Multi-Tenancy 子域

php - 具有相同数据的两个单独的 SQL 语句返回不同的结果

php脚本在浏览器中给出的结果与终端不同

php - 使用 AJAX 将 HTML 表单发布到 PHP 调用

php - 在mysql全文搜索中搜索特殊字符

PHP-Mysql 错误 %

mysql - SQL 连接三个表并拆分为列

php - Wordpress - 将帖子的内容导出到 .docx

php - 不使用 Composer 将 HTML 包添加到 Laravel