(PERL) экранирование значения $dbh->quote($login);

yarnik
Дата: 15.09.2006 13:21:02
вставляет логин вместе с одинарными кавычками, а зачем его вообще использовать?
если я буду обрабатывать данные как $login=$VOTE{'login'};
имхо при запросе $login=4000;
'4000' в базе не находится с помощью
$count = $dbh->selectrow_array("SELECT COUNT(*) FROM user WHERE login=".$dbh->quote($login));
Black
Дата: 15.09.2006 13:25:15
Модератор:
Оформляйте топики согласно требованиям форума!!! Топики оформленные не по правилам - будут удаляться.


Вы смешали, все в кучу ... читайте стандарт sql, правила составления запросов.
В данном случае, кавычки не играют никакой роли, они лишь говорят о том, что внутри находиться значение.
Berkut
Дата: 15.09.2006 13:26:10
Потому, что вы экранируете одинарные кавычки.
yarnik
Дата: 15.09.2006 13:41:14
Николай aka Motodor
к сожалению когда увидел что не написал [PERL] то было уже поздно, а изменять у вас нет возможности.... прошу извинить за это
читайте стандарт sql где?
рабочий пример с обьяснением дайте плс
yarnik
Дата: 15.09.2006 13:44:02
Berkut
Потому, что вы экранируете одинарные кавычки.

в каком месте?
Black
Дата: 15.09.2006 13:44:48
давайте начнем с того, что Вы напишите подробно, что Вас смущает, из первого поста, почти ничего не понятно ...

my $login = 4000;

my $count = $dbh->selectrow_array("SELECT COUNT(*) FROM user WHERE login = " . $dbh->quote( $login ) );
Является верным запросом, который выберит данные, где столбец login имеет значение 4000
yarnik
Дата: 15.09.2006 13:55:42
да, это работает
но вот если использовать $dbh->quote($login); для вставки значения в таблицу, записывает данные вместе с одинарными кавычками
$login=$VOTE{'login'};
$dbh->do("INSERT INTO user (login) VALUES (?)",undef, $dbh->quote($login));
Black
Дата: 15.09.2006 14:05:42
почитайте документацию
DBI - Database independent interface for Perl ( раздел Placeholders and Bind Values )
yarnik
Дата: 15.09.2006 14:25:30
если я правильно понял то при вставке значений в таблицу $dbh->quote() не используется вообще
yarnik
Дата: 15.09.2006 15:05:08
не, видно я не правильно понял, т.к. при вставке
$rc = $dbh->do("UPDATE user SET l_date=curdate() WHERE id = " . $dbh->quote($id) . " AND code = " . $dbh->quote($code));
все проходит нормально...