Новая версия php/mysql получила совокупную ошибку в предложении GROUP BY

У меня есть ошибка в моем коде, говорящая: «Недействительно в списке выбора, потому что он не содержится/агрегируется в предложении group by», вот так. Эта ошибка кажется мне знакомой в "MS SQL Server". Я не сталкивался с этой ошибкой раньше в MySQL. Эта ошибка возникла, когда я обновил свою версию Php до 7. Все мои предыдущие веб-программы до этого были затронуты.

Я попытался добавить больше столбцов в предложение «группировать по», ошибка исчезла, но результат не такой, как я ожидал. Код ниже — мой старый код.

SELECT  SUM(s.pscore) as towtal, s.pscore AS totalScore, s.cri_id, 
c.can_id, c.canid,c.can_name FROM score s INNER JOIN candidate c ON 
s.can_id = c.can_id WHERE cat_id=1 AND s.cri_id = '".$rows['cri_id']."' 
AND c.can_sex = 'Female' AND c.can_id='".$kert[$i]."'
 GROUP BY s.can_id ORDER BY s.can_id ASC LIMIT 5

Когда я добавлю GROUP BY s.can_id, s.pscore, ошибок не будет, но результат не такой, как я ожидал

Вы открыты для SQL-инъекций, используйте подготовленные заявления.

Jaquarh 29.07.2019 05:07

Это моя старая программа, wayback 2016. Просто хочу это исправить

Bug Report 29.07.2019 05:17

Вы, вероятно, захотите сгруппировать по идентификатору

Jaquarh 29.07.2019 06:35
Стоит ли изучать 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 и хотите разрабатывать...
0
4
102
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

зайдите в свою базу данных и в sql выполните эту команду

set GLOBAL sql_mode='';

Спасибо! Скажите, зачем нам это нужно? И почему сейчас у MySQL такая ошибка. Потому что в старой версии такой ошибки нет.

Bug Report 01.08.2019 03:40
SET sql_mode=(SELECT REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY', ''));

Пример корректного запроса:

SELECT  SUM(s.pscore) as towtal
     , s.pscore AS totalScore
     , s.cri_id
     , c.can_id
     , c.canid
     , c.can_name 
  FROM score s
  JOIN candidate c 
   ON s.can_id = c.can_id 
 WHERE cat_id = 1 
   AND s.cri_id = '".$rows['cri_id']."' 
   AND c.can_sex = 'Female' 
   AND c.can_id = '".$kert[$i]."'
 GROUP 
    BY s.pscore 
     , s.cri_id
     , c.can_id
     , c.canid
     , c.can_name 
 ORDER 
    BY s.can_id ASC 
 LIMIT 5;

Обратите внимание, что этот запрос уязвим для внедрения

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