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'";
Какая ошибка в этом
нет, когда я выполняю запрос в ms sql, тогда у меня нет ошибки и я получаю желаемый результат, а когда я пытаюсь выполнить через php, он дает мне ошибку
Вы сказали i also tried, значит, было две попытки PHP, верно? Оба показали одинаковое поведение?
Да, оба ведут себя одинаково
Было ли первое выполнение с переменным или статическим значением? например $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'"; такой же?
Можете ли вы напечатать $ query с установленными значениями? Кстати, вы должны использовать подготовленные операторы, чтобы избежать внедрения sql.
Ваш первый успешно выполненный запрос не содержит одинарных кавычек в течение года, но по какой-либо причине вы добавили их в свою версию PHP. Кроме того, вы должны привязать свои параметры, не объединяя их. Наконец, вы пытаетесь объединить параметры в одинарные кавычки, что, вероятно, не сработает. Распечатайте $ query на экране после того, как эта переменная будет установлена, и посмотрите SQL, который вы генерируете. Попробуйте запустить созданный вами sql в клиенте. Работает или выдает ту же ошибку?
@JNevill Я пробовал все, теперь перенесено в процедуры, но его та же ошибка неправильный синтаксис около 2004 года (или любое значение)
В конечном итоге, я думаю, вам следует поработать над привязкой своих параметров. Прямо сейчас вы открыты для внедрения sql. Исправление проблемы, с которой вы сейчас столкнулись, - своего рода трата времени, поскольку ее нужно будет переписать как подготовленный оператор, чтобы избежать атаки sql-инъекции.
Что такое «Все», что вы пробовали? Вы убирали эти лишние одинарные кавычки в течение года? Проверяли ли вы значение $ query, чтобы показать, что создается sql до того, как php отправит его в базу данных? Если да, то можете ли вы поделиться здесь этим выражением sql?
@JNevill благодарит человека, я следил за подготовленным заявлением, и он сработал, все решено
@OsamaInayat Это отличные новости! У вас будет гораздо более безопасный код, и, как ни странно, даже несмотря на то, что это больше строк кода, его легче писать и поддерживать. Я очень рад, что у вас все получилось :)






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