Thread 31C3 - Perl-Vortrag (Perl-Rant) (30 answers)
Opened by Raubtier at 2014-12-28 00:34

renee
 2015-12-30 15:26
#178987 #178987
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
2014-12-30T13:11:39 rosti
Es funktioniert einwandfrei, wenn diese Methode nicht als Klassenmethode sondern über die Instanz aufgerufen wird.

Ich glaube, Du hast den Bug nicht verstanden. Der Bug liegt nicht darin, dass es nicht als Instanzmethode aufgerufen wurde, sondern das Handling des zweiten Parameters der quote-Methode.

Vergleiche:
Code: (dl )
1
2
3
4
5
6
7
use DBI;

my $dbh = DBI->connect("DBI:mysql:dbname:host","user","password"); # hier natürlich richtige Werte einsetzen
print $dbh->quote("admin'");

__END__
Ausgabe: 'admin\''

mit
Code: (dl )
1
2
3
4
5
6
7
use DBI;

my $dbh = DBI->connect("DBI:mysql:dbname:host","user","password"); # hier natürlich richtige Werte einsetzen
print $dbh->quote("admin'",2);

__END__
Ausgabe: admin'


Quote
Praxisnah: Ggf. ist ein multiple Insert effizienter als ein prepared Statement. Multiple Insert ist ein Fall für quote().

???
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use strict;
use warnings;

use DBI;
use feature 'say';

my $dbh = DBI->connect("DBI:mysql:quote_test:localhost","user","test");

my $sql = 'INSERT INTO test (id, name, result) VALUES ';
my @tests = (
  [ 1, 'quote', 'ok' ],
  [ 2, 'rose', 'nok' ],
  [ 3, 'blue', 'ok' ],
  [ 4, 'hex', 'nok' ],
  [ 5, 'quote', 'ok' ],
);

my (@binds,@tests_sql);
for my $test ( @tests ) {
  push @tests_sql, '(?,?,?)';
  push @binds, @{$test};
}

$sql .= join ',', @tests_sql;
my $sth = $dbh->prepare( $sql );
$sth->execute(@binds);


Quote
quote_identifier() maskiert Feldnamen, Tabellennamen, also die Bezeichner und das setze ich immer dann ein, wenn Bezeichner nicht fest im Code verdrahtet sind sondern bspw. von außen her konfigurierbar sind.
Um quote_identifier geht es aber nicht.

Quote
CGI: Wie ein Enctype="application/x-www-form-urlencoded" oder "multipart/form-data" auszusehen hat, steht in uralten RFCs. Wer CGI.pm nicht mag, darf sich gerne einen eigenen Parser schreiben. Für den richtigen Umgang mit Schlüsselparametern und Parameter-Kontrollstrukturen ist das völlig belanglos, solange der Parser RFC-gerecht programmiert ist, was im CGI.pm mit Sicherheit der Fall ist.

Was verstehst Du unter Schlüsselparametern und Parameter-Kontrollstrukturen
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/

View full thread 31C3 - Perl-Vortrag (Perl-Rant)