The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Как вставить переменную в SQL запрос на Perl?"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"Как вставить переменную в SQL запрос на Perl?"  
Сообщение от microbash on 07-Апр-08, 13:25 
вот запрос к базе Mysql из скрипта Perl:

$sth1=$dbh->prepare( q{ UPDATE list SET statusdb="${statusdb}" } ) or die "Can't prepare";
$sth1->execute;
$sth1->finish();

по нему в базу вставляется '${statusdb}'
а мне бы нужно чтобы вставлялось текущее значение переменной ${statusdb}
например при ${statusdb}='OK', мне нужно в базе 'OK', а не '${statusdb}'

как бы это сделать?
хелп оч. нужно

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Как вставить переменную в SQL запрос на Perl?"  
Сообщение от tx2 on 07-Апр-08, 13:43 
q{ это строка не интерполируется }
qq{ а эта интерполируется }

ТЕ поставить второй вариант..

PS а кто будет эскейпить значения переменных???

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Как вставить переменную в SQL запрос на Perl?"  
Сообщение от microbash on 08-Апр-08, 09:31 
>q{ это строка не интерполируется }
>qq{ а эта интерполируется }
>
>ТЕ поставить второй вариант..
>
>PS а кто будет эскейпить значения переменных???

что есть "эскейпить переменные"? токо сразу не банте :)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Как вставить переменную в SQL запрос на Perl?"  
Сообщение от angra (ok) on 08-Апр-08, 17:42 
Поищи в гугле на тему sql injection. Вот простой пример, берем твой запрос:
UPDATE list SET statusdb="${statusdb}"
Теперь предположим что $statusdb имеет такое содержимое:
";delete from veryimportanttable where "a"="a
Получаем:
UPDATE list SET statusdb="";delete from very_important_table where "a"="a"
Под "эскейпить переменные" понимается экранирование всех специальных(в данном контексте) символов, что приведет к подобному:
UPDATE list SET statusdb="\";delete from very_important_table where \"a\"=\"a"
Если используем DBI::MySQL, то там все просто - поддерживается prepare с биндом параметров и не нужно заморачиваться с экранированием.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "rtmf? уж на что я _ничего_ про перл не знаю..."  
Сообщение от Andrey Mitrofanov on 07-Апр-08, 13:53 
>как бы это сделать?

' --> " // q{ --> qq{

>хелп оч. нужно

$ man perlop

?
$ perldoc -q strings

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Как вставить переменную в SQL запрос на Perl?"  
Сообщение от microbash on 07-Апр-08, 14:13 
СПСБ всем за помощь
ЗАРАБОТАЛО! :)


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Как вставить переменную в SQL запрос на Perl?"  
Сообщение от Wulf (??) on 07-Апр-08, 14:41 
>вот запрос к базе Mysql из скрипта Perl:
>
>$sth1=$dbh->prepare( q{ UPDATE list SET statusdb="${statusdb}" } ) or die "Can't prepare";
>$sth1->execute;
>$sth1->finish();
>

Идеологически правильно делать с placeholder-ами:

$sth1=$dbh->prepare( q{ UPDATE list SET statusdb=? } ) or die "Can't prepare";
$sth1->execute(${statusdb});
$sth1->finish();

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру