【问题标题】:Sql search error, needing syntax explanationsql搜索错误,需要语法解释
【发布时间】:2019-03-01 09:36:59
【问题描述】:

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

在表格 respostas 中,我只需要来自用户 $logado 的 aquestion_id e 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');
  }
}
?>

感谢任何帮助,对于第一次用葡萄牙语发帖再次抱歉。

【问题讨论】:

  • 附带说明:别名应该是助记符,例如 q 代表问题,r 代表响应。别名会增加查询的可读性,但是像 a、b、c 这样的名称会降低它的可读性。

标签: php mysql sql mysqli


【解决方案1】:

首先:查询应该在语法上工作,但我怀疑它返回你想要的。您正在随机选择用户的一个答案以及一些不相关的问题。

至于WHERE a.user_id = '$logado''$logado' 是一个字符串。它包含一个美元符号和单词 logado。 MySQL 想要将数字 user_id 与它进行比较,因此它将您的字符串转换为数字。在我看来,这应该更好地失败并出现错误,但 MySQL 宁愿返回 0。这就是您在结果中看到的:用户 0 给出的答案和一个问题。

我想你想改用变量:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多