Ошибка поиска в SQL, требующая объяснения синтаксиса - PullRequest
0 голосов
/ 01 марта 2019

Мне нужна помощь для создания поиска с использованием 2 таблиц, вероятно, это синтаксическая ошибка.

В таблице respostas мне нужна дата из aquestion_id e user_id только от пользователя $ logado.

Из табличных вопросов мне нужен вопрос от pergunta и question_id, который нужно создавать только из идентификаторов, которые не прослушиваются в aquestion_id.Для теста я сделал 4 вопроса, но он не работает.

Вопрос возникает случайно, но $ logado выглядит не включенным в поиск, потому что показывает 0 в echo $exibir['user_id'];.

Также все вопросы приходятслучайно, но не останавливайтесь, чтобы показать после ответа.

<?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 голосов
/ 01 марта 2019

Прежде всего: запрос должен работать синтаксически, но я сомневаюсь, что он возвращает то, что вы хотите.Вы случайным образом выбираете один из ответов пользователя вместе с каким-то не связанным вопросом.

Что касается WHERE a.user_id = '$logado': '$logado' - это строка.Он содержит знак доллара и слово логадо.MySQL хочет сравнить с ним числовое значение user_id, поэтому он преобразует вашу строку в число.На мой взгляд, это должно сработать с ошибкой, но вместо этого MySQL вернет 0.Вот что вы видите в результатах: ответ пользователя 0 и вопрос.

Я полагаю, вы хотите использовать вместо этого переменную:

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

(И тогда вы можетедолжен исправить ваш запрос, чтобы вернуть что-то значимое.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...