Ошибка поиска Sql, требуется объяснение синтаксиса

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

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

Из вопросов таблицы мне нужен вопрос от pergunta и question_id, который нужно создавать только из 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');
  }
}
?>

Благодарю за любую помощь и еще раз извините за первое сообщение на португальском языке.

На заметку: псевдонимы должны быть мнемоническими, например, q для вопроса и r для ответа. Псевдонимы повышают читабельность запроса, а такие имена, как a, b, c, снижают ее.

Thorsten Kettner 01.03.2019 12:43
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
1
50
1

Ответы 1

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

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

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

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

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

Другие вопросы по теме