Фигурные скобки в SQL-запросах

Главные вкладки

Аватар пользователя Murz Murz 6 августа 2007 в 15:09

Когда я пытаюсь добавить фигурные скобки в запросе через db_query(), в базу попадали значения без этих скобок. Причем вырезались скобки не только в названиях таблиц и переменных, но и в их значениях!

Например строка db_query("INSERT INTO {table1} SET id=1, javascript='function test1() {alert('test');}' "); добавляет в базу данных значение javascript function test1() alert('test'); без фигурных скобок.

Экранирование фигурных скобок обратными слешами function test1() \{alert('test');\} не помогает. Также я не нашёл никаких опций в функции db_query для отключения либо изменения режима проверки фигурных скобок. Приходится пока использовать функцию _db_query() для этого действия, но при этом теряется функцинальность сайта при использовании префиксов базы данных.

Судя по исходникам файла работы с базой данных, вырезание скобок там сделано очень просто, поэтому опцию для фильтрации параметров искать смысла нет. Расскажите кто ещё как выходил из данной ситуации?
И ещё может быть стоит разработчикам указать чтобы они в следующих версиях расширили функцию db_query() для более умной фильтрации фигурных скобок?

Комментарии

Аватар пользователя Murz Murz 8 августа 2007 в 11:31

О, спасибо за идею, этим способом всё нормально добавляется. Что-то этот вариант мне самому в голову не пришел почему-то....

Аватар пользователя Murz Murz 9 августа 2007 в 15:41

Ха, а теперь другой косяк :
db_query("SELECT DATE_FORMAT(time,'%y.%m.%d %H')");Съедает символ %d из запроса, пытаясь заменить его на параметр функции.