Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля

Почему не работает запрос к базе данных, часть которого хранится в компоненте?

27.11.2010, 15:44
Сухроб Хусамов
Веб-студия ООО «Альтернатива»

Зарегистрирован:
2008-04-28
Сообщений: 28

Здравствуйте!

Может кто знает в чем может быть проблема.

Почему не работает запрос к базе данных, часть которого хранится в компоненте?

Если я так запрос делаю через ваш объект $db, то запрос отрабатывается нормально:

Код:
$mgGoodies = $db->get_results("
select Message_ID, Price, Currency, Description, Name, Subdivision_ID
from Message123
where Created > CURDATE() - 10
");


А если я делаю так (where берется из компонента):

Код:
$mgGoodies = $db->get_results("
select Message_ID, Price, Currency, Description, Name, Subdivision_ID
from Message123
where $f_WhereCondition
");


то возникает ошибка:

Код:
Warning: You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version
for the right syntax to use near '; CURDATE() - 10'
at line 3 in W:\home\mebel-gem.ro\www\netcat\system\nc_db.class.php on line 112


Как это можно исправить?

Сухроб Хусамов
27.11.2010, 16:08
Владимир Ветошкин

Зарегистрирован:
2010-10-17
Сообщений: 12

Какую строку содержит $f_WhereCondition?
27.11.2010, 16:24
Сухроб Хусамов
Веб-студия ООО «Альтернатива»

Зарегистрирован:
2008-04-28
Сообщений: 28

$f_WhereCondition = "Created > CURDATE() - 10"

Сухроб Хусамов
29.11.2010, 23:02
Владимир Ветошкин

Зарегистрирован:
2010-10-17
Сообщений: 12

Вместо $f_WhereCondition:
htmlspecialchars_decode($f_WhereCondition)

Ну или создай, к примеру, переменную:
$tmp = htmlspecialchars_decode($f_WhereCondition);

А затем уже:
$mgGoodies = $db->get_results("

select Message_ID, Price, Currency, Description, Name, Subdivision_ID

from Message123

where $tmp

");
30.11.2010, 11:43
Мирон

Зарегистрирован:
2010-08-03
Сообщений: 5

Да просто нужно в кавычки обернуть. Строка же
01.12.2010, 00:43
DiGGy
DiGGy
DiGGy

Зарегистрирован:
2005-04-04
Сообщений: 1546

Очень небезопасный вариант формирования запроса, большая вероятность sql-инъекции из вне.

Temet nosce...
01.12.2010, 23:06
Сухроб Хусамов
Веб-студия ООО «Альтернатива»

Зарегистрирован:
2008-04-28
Сообщений: 28

Спасибо! Буду пробовать.


Цитата:
Очень небезопасный вариант формирования запроса, большая вероятность sql-инъекции из вне.


В Неткате есть аналогичный вариант, это сортировка элементов компонента. В поле можно забить часть опции ORDER BY.

Так что плюс/минус такой вариант ничего не изменит уже.

Сухроб Хусамов
01.12.2010, 23:42
Сухроб Хусамов
Веб-студия ООО «Альтернатива»

Зарегистрирован:
2008-04-28
Сообщений: 28

Цитата:
Вместо $f_WhereCondition:
htmlspecialchars_decode($f_WhereCondition)


Спасибо! Это сработало.

Не ясно почему из базы данных закодированное идет...

Сухроб Хусамов
198 196 2010-12-01 23:42:41 10876
Описание проекта