|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : abrasha shapirus 2:550/4077.940 24 Nov 2003 15:36:50 To : Jahor Miadzviedziew Subject : DBI и метод quote -------------------------------------------------------------------------------- JM> есть, скажем JM> ... JM> my $sth = $dbh->prepare_cached("SELECT var FROM table WHERE JM> another_var=?"); JM> ... JM> $sth->execute($another_var); JM> ... JM> при вызове $sth->execute($another_var); для $another_var будет JM> вызываться quote() для $another_var или это я должен сам делать? по-моему, это зависит от используемого драйвера. я как-то наткнулся на проблему при использовании DBD::mysql. дело в том, что mysql не желает принимать значения в кавычках в качестве параметров модификатора LIMIT. то есть, LIMIT 0,5 -- это нормально, а LIMIT '0','5' не схавает. у меня были вызовы типа: $dbh->prepare('SELECT foo FROM bar ORDER by zzz LIMIT ?,?'); $sth->execute($qty * $pos, $qty); как-то само собой получалось, что параметры не квотились. а потом поставил более свежую версию DBD::mysql, и все всегда начало квотиться, что вызвало проблемы. чтение чейнджлога показало, что: 2003-06-22 Rudy Lippan <rlippan@remotelinux.com> (2.9002) [skipped] * Fixed bug where strings that were used in numeric context were not getting quoted on execute(). Now all parameters are bound as varchar by default. **NOTE** this is a change in behaviour that MAY cause problems with some SQL statements. If quoted integers, for example, cause any problems, use bind_param(<column_id>, undef, SQL_INTEGER) to force a column to be bound as an integer. в общем, tyt и метод решения проблемы указан. шапирус. ... Я не получаю почту ни у Янкевича, ни у Яргина. --- * Origin: (2:550/4077.940) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/46683fc1fe45.html, оценка из 5, голосов 10
|