Schrift
[thread]6050[/thread]

MySQL Problem: geht nicht



<< >> 4 Einträge, 1 Seite
Gast Gast
 2004-01-30 13:10
#79657 #79657
Hallo,
habe eine Datenbank mit mehreren Feldern und Zeilen, ich möchte jede Zeile durchgehen, ein Feld auf einen bestimmten Text prüfen und wenn vorhanden diesen ersetzen durch einen Alternativtext, habe leider keinen Schimmer wie das geht.

Danke im voraus
zeid
Crian
 2004-01-30 13:30
#79658 #79658
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
Was ist das Problem, das Durchgehen der DB oder das Ersetzen?

Zum Ersetzen: Dazu bietet sich ein regulärer Ausdruck an. Dieser hat die Form

Code: (dl )
$variable =~ s~SUCHTEIL~ERSETZUNGSTEIL~OPTIONEN;


damit kann man Teile der in der Variablen gespeicherten Information verändern.

Etwa:

Code: (dl )
1
2
3
4
5
my $var = 'Ein blödes Beispiel';

$var =~ s~blödes~schönes~;

print $var;


Ausgabe: Ein schönes Beispiel

Für den Suchteil kann man sehr komplex formulieren, was man suchen möchte und Teile des gefundenen Strings speichern... dafür wäre es gut zu wissen, was Du konkret vorhast.\n\n

<!--EDIT|Crian|1075462488-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
renee
 2004-01-30 14:06
#79659 #79659
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
use DBI;
my $user = 'username';
my $password = 'password';
my $database = 'mydb';
my $host = 'localhost';
my @entries = ();

my $dbh = DBI->connect("DBI:mysql:$database:$host",$username,$password) or die $DBI::errstr;
my $sth = $dbh->prepare("SELECT * FROM table;");
$sth->execute();
while(my @array = $sth->fetchrow_array){
if($array[0] =~ /SUCHTEIL/){
$array[0] =~ s~SUCHTEIL~ERSETZUNGSTEIL~OPTIONEN;
push(@entries,\@array);
}
}
$sth->finish();

foreach(@entries){
$dbh->do("UPDATE table SET spalte1 = '$array[0]', spalte2 = '$array[1]'... WHERE ID = id;");
}

$dbh->disconnect();

ungetestet
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/
Ronnie
 2004-01-30 15:32
#79660 #79660
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Renees Beispiel sollte gehen, aber achte um Himmels Willen auf die IDs, sonst gefällt dir deine Datenbank hinterher nichtmehr! Ich würde sogar die ID als key für einen Hash nehmen, wo du die veränderten Felder als Werte für das UPDATE zwischenlagerst. Auf jeden Fall vorher Backup machen!
<< >> 4 Einträge, 1 Seite



View all threads created 2004-01-30 13:10.