Запрос работает нормально MS SQL, но выдает ошибку в PHP

select count(ratings) as number_of_ratings,sum(ratings) as sum_of_ratings 
from performance_reviews 
where year(review_date)=2004 and employee_id='00009-1761417-9';

Я выполняю выше QUERY в php, это дает ошибку

incorrect syntax near '2004'

Я также пробовал это с

select count(ratings) as number_of_ratings,sum(ratings) as sum_of_ratings 
from performance_reviews 
where year(review_date)='2004' and employee_id='00009-1761417-9';

мой запрос php как

$query = "select count(ratings) as number_of_ratings,sum(ratings) as sum_of_ratings 
          from performance_reviews 
          where year(review_date)='$year' and employee_id='$emp_id'";

Какая ошибка в этом

Одна и та же ошибка при обоих исполнениях?

user3783243 15.12.2018 12:23

нет, когда я выполняю запрос в ms sql, тогда у меня нет ошибки и я получаю желаемый результат, а когда я пытаюсь выполнить через php, он дает мне ошибку

Osama Inayat 15.12.2018 12:27

Вы сказали i also tried, значит, было две попытки PHP, верно? Оба показали одинаковое поведение?

user3783243 15.12.2018 12:28

Да, оба ведут себя одинаково

Osama Inayat 15.12.2018 12:28

Было ли первое выполнение с переменным или статическим значением? например $query = "select count(ratings) as number_of_ratings,sum(ratings) as sum_of_ratings from performance_reviews where year(review_date)=2004 and employee_id='$emp_id'"; такой же?

user3783243 15.12.2018 12:29

Можете ли вы напечатать $ query с установленными значениями? Кстати, вы должны использовать подготовленные операторы, чтобы избежать внедрения sql.

Juan 15.12.2018 12:38

Ваш первый успешно выполненный запрос не содержит одинарных кавычек в течение года, но по какой-либо причине вы добавили их в свою версию PHP. Кроме того, вы должны привязать свои параметры, не объединяя их. Наконец, вы пытаетесь объединить параметры в одинарные кавычки, что, вероятно, не сработает. Распечатайте $ query на экране после того, как эта переменная будет установлена, и посмотрите SQL, который вы генерируете. Попробуйте запустить созданный вами sql в клиенте. Работает или выдает ту же ошибку?

JNevill 15.12.2018 12:38

@JNevill Я пробовал все, теперь перенесено в процедуры, но его та же ошибка неправильный синтаксис около 2004 года (или любое значение)

Osama Inayat 15.12.2018 12:43

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

JNevill 15.12.2018 12:45

Что такое «Все», что вы пробовали? Вы убирали эти лишние одинарные кавычки в течение года? Проверяли ли вы значение $ query, чтобы показать, что создается sql до того, как php отправит его в базу данных? Если да, то можете ли вы поделиться здесь этим выражением sql?

JNevill 15.12.2018 12:47

@JNevill благодарит человека, я следил за подготовленным заявлением, и он сработал, все решено

Osama Inayat 15.12.2018 12:56

@OsamaInayat Это отличные новости! У вас будет гораздо более безопасный код, и, как ни странно, даже несмотря на то, что это больше строк кода, его легче писать и поддерживать. Я очень рад, что у вас все получилось :)

JNevill 15.12.2018 12:57
Стоит ли изучать 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 и хотите разрабатывать...
1
12
50
0

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