SQL搜索错误,需要语法说明

时间:2019-03-01 09:36:59

标签: php mysql sql mysqli

我需要一些帮助来创建使用2个表的搜索,这可能是语法错误。

在表respostas中,我只需要$ logado用户的aquestion_id和user_id中的日期。

从表问题中,我需要来自pergunta和question_id的问题,这些问题仅需要从aquestion_id中未监听的ID中创建。 为了进行测试,我提出了4个问题,但没有成功。

问题是随机出现的,但是$ logado似乎未包含在搜索中,因为它在echo $exibir['user_id'];中显示为0。

所有问题都是随机出现的,但回答完后不要停下来显示。

<?php
$sqluser = "SELECT a.aquestion_id, a.user_id, b.pergunta, b.question_id FROM respostas a INNER JOIN questions b ON a.aquestion_id != b.question_id WHERE a.user_id = '$logado' ORDER BY RAND() LIMIT 1";
$executarquest=mysqli_query($conuser, $sqluser);
while ($exibir = mysqli_fetch_array($executarquest)){
  if ($exibir['question_id'] > 0)
  {
    $guarda = ($exibir['question_id']);
      echo '<b>Quesion ID: </b>';
    echo $exibir['question_id'];
    echo '<br>';
    echo $exibir['pergunta'];
    echo $exibir['user_id'];

  }
  else{
    header('location:/quiz/acabou.php');
  }
}
?>

感谢您的帮助,对于第一次以葡萄牙语发布,再次表示歉意。

1 个答案:

答案 0 :(得分:0)

首先,该查询应该在语法上起作用,但是我怀疑它是否返回您想要的内容。您是在随机选择用户的答案之一以及一些不相关的问题。

关于WHERE a.user_id = '$logado''$logado'是一个字符串。它包含一个美元符号和单词logado。 MySQL希望将数字user_id与它进行比较,因此它将字符串转换为数字。我认为这最好失败,但MySQL会返回0。这就是您在结果中看到的结果:用户0给出的答案和问题。

我想您想使用一个变量代替

"...WHERE a.user_id = ".$logado." ORDER ..."

(然后您可能必须修正查询以返回有意义的内容。)