2013-11-22 5 views
0

Привет всем, что вы mysql и perl гуру!mysql и perl - добавление переменной в запрос

У меня есть код, который выглядит как $ магазин = QQ (INSERT INTO основной (RELEASE_DATE) VALUES (DATE_ADD (NOW(), ИНТЕРВАЛ 1 день))

Он отлично работает. Проблема в том, мне нужно найти способ использовать переменную вместо «INTERVAL 1 DAY». Это значение поступает из формы и имеет около 12 вариантов (например: 1 день, 2 дня, 1 неделя, 2 недели).

Я сейчас используя 12 различных условий if/elsif, основанных на переменных формы, поэтому код сейчас очень громоздкий.

Я пытаюсь получить что-то вроде этого для работы var timeframe = ""; if ($ data {date_field} == "1 Week") { $ timeframe = "1 WEEK"; } . . $ магазин = QQ (INSERT INTO основной (RELEASE_DATE) VALUES (DATE_ADD (NOW(), ИНТЕРВАЛ "$ таймфрейм"))

Но ошибки, говоря, у меня есть проблема синтаксиса MySQL.

Каждый знает, что Я должен сделать, чтобы получить эту работу, так что я могу сократить код немного

+0

Возможно, проблема заключается в котировках. Я бы попытался удалить кавычки примерно с $ time. Вы можете вывести значение хранилища перед его запуском? давайте посмотрим, что это. – user2932397

+0

дубликат http://stackoverflow.com/questions/10659737/how-can-i-use-a-query-with-placeholder-inside-quotes-perl-postgresql – KeepCalmAndCarryOn

+1

Я настоятельно рекомендую вам прислушаться к советам в предыдущем вопрос * использовать заполнители * в вашем SQL-заявлении и делать 'готовят' только один раз. – Borodin

ответ

3

потерять кавычки;? $bar = "baz"; qq(foo $bar) будет foo baz, в то время как qq(foo "$bar") дает foo "baz", которые вы не хотите в этом случае

.

Однако, в частности, для SQL этот подход шляпа опасно. В вашем случае это нормально, так как вы сами устанавливаете значение $timeframe; но если есть небольшая возможность ввода пользователя, вы можете получить Bobby Tables incident. В частности, изучите Perl page.

+0

Спасибо! Это было абсолютно то, что мне нужно! Он отлично работает! –

+0

@Borodin, спасибо за редактирование! – Amadan

Смежные вопросы