DBI, mysql Frage
am 10.07.2006 09:49:17 von Reinhard Pagitsch
Hallo,
Aus Text-Dateien füge ich den Inhalt in eine mysql DB ein.
alles läuft ganz gut. Aber wenn der Text ein ' enthält (z.B: don't)
beschwert sich mysql. Gibt es dafür eine Funktion, oder was anderes, die
das ' maskiert?
Danke,
Reinhard
Re: DBI, mysql Frage
am 10.07.2006 09:55:30 von Daniel Fischer
Reinhard Pagitsch!
> Aus Text-Dateien füge ich den Inhalt in eine mysql DB ein.
> alles läuft ganz gut. Aber wenn der Text ein ' enthält (z.B: don't)
> beschwert sich mysql. Gibt es dafür eine Funktion, oder was anderes, die
> das ' maskiert?
Ich glaube, Du willst Dir ganz dringend mal durchlesen, wie man bei DBI
mit prepared statements arbeitet.
Gruß
Daniel
Re: DBI, mysql Frage
am 10.07.2006 10:10:50 von Reinhard Pagitsch
Daniel Fischer wrote:
> Reinhard Pagitsch!
>
>> Aus Text-Dateien füge ich den Inhalt in eine mysql DB ein.
>> alles läuft ganz gut. Aber wenn der Text ein ' enthält (z.B: don't)
>> beschwert sich mysql. Gibt es dafür eine Funktion, oder was anderes, die
>> das ' maskiert?
>
> Ich glaube, Du willst Dir ganz dringend mal durchlesen, wie man bei DBI
> mit prepared statements arbeitet.
Gut, ich habs mir durchgelesen aber ich komm einfach nicht drauf.
Bitte gib mir noch ein Stichwort.
Danke,
Reinhard
Re: DBI, mysql Frage
am 10.07.2006 10:30:59 von Christian Kirsch
Reinhard Pagitsch schrieb:
> Daniel Fischer wrote:
>
>> Reinhard Pagitsch!
>>
>>> Aus Text-Dateien füge ich den Inhalt in eine mysql DB ein.
>>> alles läuft ganz gut. Aber wenn der Text ein ' enthält (z.B: don't)
>>> beschwert sich mysql. Gibt es dafür eine Funktion, oder was anderes, die
>>> das ' maskiert?
>> Ich glaube, Du willst Dir ganz dringend mal durchlesen, wie man bei DBI
>> mit prepared statements arbeitet.
>
> Gut, ich habs mir durchgelesen aber ich komm einfach nicht drauf.
> Bitte gib mir noch ein Stichwort.
>
Was verstehst Du denn nicht? Du sollst einfach Deine INSERTs mit einem
prepared statement durchführen, also etwa
my $sth = $dbh->prepare(qq!
INSERT INTO tabelle (bla,text, fasel) values (?,?,?)
!);
$sth->execute(1,$text, 33);
und NICHT
$dbh->do('INSERT INTO tabelle (bla,text,fasel)
values(1,$text,33)');
Und das gilt im übrigen für fast alle Statements. Prepared Statements
können die Performance verbessern, Du musst nicht quoten, und sie
können auch gegen SQL-Injektionen helfen.
Aber all das steht doch auch in der DBI-Dokumentation.
Re: DBI, mysql Frage
am 10.07.2006 11:28:48 von Reinhard Pagitsch
Christian Kirsch wrote:
>
> Was verstehst Du denn nicht? Du sollst einfach Deine INSERTs mit einem
> prepared statement durchführen, also etwa
>
> my $sth = $dbh->prepare(qq!
> INSERT INTO tabelle (bla,text, fasel) values (?,?,?)
> !);
> $sth->execute(1,$text, 33);
>
> und NICHT
> $dbh->do('INSERT INTO tabelle (bla,text,fasel)
> values(1,$text,33)');
>
> Und das gilt im übrigen für fast alle Statements. Prepared Statements
> können die Performance verbessern, Du musst nicht quoten, und sie
> können auch gegen SQL-Injektionen helfen.
>
> Aber all das steht doch auch in der DBI-Dokumentation.
Danke, das war es. Ich bin total auf der Leitung gestanden, obwohl ich
mir die Doku durchgelesen habe. Irgendwie habe ich nach den falschen
Sachen gesucht.
regards,
Reinhard
Re: DBI, mysql Frage
am 11.07.2006 21:52:44 von Andreas Thul
Hallo Reinhard,
Reinhard Pagitsch wrote in
news:e8t0pu$30em$1@geiz-ist-geil.priv.at:
> Hallo,
>
> Aus Text-Dateien füge ich den Inhalt in eine mysql DB ein.
> alles läuft ganz gut. Aber wenn der Text ein ' enthält (z.B: don't)
> beschwert sich mysql. Gibt es dafür eine Funktion, oder was anderes,
> die das ' maskiert?
Gibt's - und zwar: $quoted_string = $dbh->quote($string);
Grüße,
-andi