|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Serg Chervjakov 2:5020/400 28 Jul 2005 16:09:09 To : Zavalishin Dennis Subject : переменная в запросе mysql -------------------------------------------------------------------------------- Thu Jul 28 2005 15:46, Zavalishin Dennis wrote to All: ZD> $sth = $dbh->prepare( q{ SELECT * FROM catalog_structure where ZD> types=0 }) || die "Can't prepare statement: $DBI::errstr"; ZD> $sth->execute; ZD> Hемогу подставить переменную после types= (вместо 0) ZD> Пытаюсь подставить хэш $form{'types'}, значение = 1 ZD> Пытался подставлять: types='$form{'types'}' ZD> types="$form{'types'}" ZD> types=$form{'types'} ZD> И просто отдельной переменной. ZD> В результате БД не находит ниодного значения в таблице Я чесно сознаюсь - я никогда не пользовался q {}:). Хоть я и представляю, что эта штука квотит то что внутри скобок, но как квотит (с интерполяцией или нет), я не знаю и смотреть доки мне тоже лень:). Потому просто скажу, что $sth = $dbh->prepare("SELECT * FROM catalog_structure where types='$form{types}'") будет работать. Hо это было бы плохой услугой дать такую подсказку:). Потому что правильное решение - почитать про плейсхолдеры (в документации вестимо, предположительно - perldoc DBI), а ответом в данном случае будет: $sth = $dbh->prepare( q{ SELECT * FROM catalog_structure where types=? }, $form{'types'}) || die "Can't prepare statement: $DBI::errstr"; $sth->execute; если делать в твоем варианте записи.. В моем: $sth = $dbh->prepare("SELECT * FROM catalog_structure where types=?", $form{types}); $sth->execute; ибо ошибки я предпочитаю отлавливать встроенными в DBI средствами отлова ошибок (да, да - пинайте меня все, а я все равно буду делать так как нравится):). --- ifmail v.2.15dev5.3 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/16679e4e34948.html, оценка из 5, голосов 10
|