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搜索错误,需要语法解释的主要内容,如果未能解决你的问题,请参考以下文章