perl - strings - php pdo quote
¿Hay un equivalente de mysql_real_escape_string() de PHP para DBI de Perl? (5)
Como cita ?
También recomendaría leer la documentación de DBD :: MySQL si está preocupado por utf8.
¿Podrían algunos decirme si hay una función que funcione igual que la mysql_real_escape_string()
PHP para Perl del módulo DBI ?
Debe usar marcadores de posición y valores de enlace .
Desde http://www.stonehenge.com/merlyn/UnixReview/col58.html :
use SQL::Abstract; ... my $sqa = SQL::Abstract->new; my ($owner, $account_type) = @_; # from inputs my ($sql, @bind) = $sqa->select(''account_data'', # table [qw(account_id balance)], # fields { account_owner => $owner, account_type => $account_type }, # "where" ); my $sth = $dbh->prepare_cached($sql); # reuse SQL if we can $sth->execute(@bind); # execute it for this query
No lo hagas Escapar. SQL.
No lo hagas Citar. SQL.
Use marcadores / marcadores de posición SQL ( ?
). La estructura de la declaración SQL y los valores de datos representados por los marcadores de posición se envían a la base de datos completamente por separado, (salvo un error en el motor de base de datos o el módulo DBD) no hay forma de que los valores de datos puedan interpretarse como SQL comandos.
my $name = "Robert''); DROP TABLE Students; --";
my $sth = $dbh->prepare(''SELECT id, age FROM Students WHERE name = ?'');
$sth->execute($name); # Finds Little Bobby Tables without harming the db
Como beneficio adicional, el uso de marcadores de posición también es más eficiente si reutiliza su declaración de SQL (solo necesita estar preparado una vez) y no menos eficiente si no lo hace (si no llama a preparar de forma explícita, todavía obtiene llamado implícitamente antes de que se ejecute la consulta).
Método de referencia de la base de datos "quote"
my $dbh = DBI->connect( ... );
$sql = sprintf "SELECT foo FROM bar WHERE baz = %s",
$dbh->quote("Don''t");