sql搜索错误,需要语法解释

Posted

技术标签:

【中文标题】sql搜索错误,需要语法解释【英文标题】:Sql search error, needing syntax explanation 【发布时间】: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 这样的名称会降低它的可读性。 【参考方案1】:

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

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

我想你想改用变量:

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

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

【讨论】:

以上是关于sql搜索错误,需要语法解释的主要内容,如果未能解决你的问题,请参考以下文章

需要帮助查找 SQL 代码中的语法错误 [关闭]

SQL:加入语法错误

完全正确的 SQL 语法的语法错误

SQL 交集 - 语法错误

PL/SQL的基本语法

用于验证 sql 语法错误的 Powershell 脚本