Я сделал веб-приложение, протестированное на локальном хосте отлично. Поместите его на мой сервер и на GROUP BY
в запросе он выводит пустой пульт с 500 internal server error
в консоли.Группа по причинам 500 ошибка межсетевого сервера
$sth = $db->prepare('SELECT users.username FROM users INNER JOIN questions ON users.question_id=questions.id WHERE questions.question_list_pass = "'.$ww.'" GROUP BY users.username ORDER BY users.username');
$sth->execute();
$usernames = $sth->fetchAll(PDO::FETCH_ASSOC);
$sth = $db->prepare('SELECT questions.id, questions.question_name FROM
questions INNER JOIN users ON users.question_id=questions.id WHERE questions.question_list_pass = "'.$ww.'" GROUP BY questions.question_name ORDER BY questions.question_name');
$sth->execute();
$question_names = $sth->fetchAll(PDO::FETCH_ASSOC);
Первый запрос идентичен второму, за исключением получения данных из разных таблиц. Когда я запускаю скрипт, он выводит 500 internal server error
, а когда я удаляюGROUP BY questions.question_name
из второго запроса (но все равно сохраняю порядок), скрипт работает, НО он выводит все несколько раз (потому что порядок не работает должным образом)
Любые идеи, как это возможно? Я позволяю разным людям смотреть на него, но никто не знает, что неправильно.
С наилучшими пожеланиями,
Зачем вам нужно объединение в первую очередь? Кажется, что вам не нужно что-либо от пользователей во втором запросе, если только это не ограничивает вопросы, связанные с пользователями ..., которые существовал бы более эффективно. Зачем вам нужна группа, если у вас нет агрегации? GROUP BY действительно требуется, только если у вас есть агрегация. Если у вас есть повторяющиеся вопросы и вы хотите отличные записи, используйте DISTINCT. 'SELECT DISTINCT questions.id, questions.question_name FROM вопросов INNER JOIN users on users.question_id = questions.id WHERE questions.question_list_pass =" '. $ Ww.' "ORDER BY questions.question_name' – xQbert
500 внутренняя ошибка причина' $ sth = false'. Таким образом, у вас есть фатальная ошибка, когда вы выполняете 'execute();'. Пожалуйста, комментируйте exec и введите все и после строки запроса 'echo 'SELECT users.username FROM users INNER JOIN questions ON users.question_id = questions.id WHERE questions.question_list_pass ="'. $ Ww. '"Пользователи GROUP BY .username ORDER BY users.username''; – Xenofexs
Если вы проверите свои журналы ошибок, вы получите довольно хорошее объяснение обычно. –