online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon Uesch vom 02.03.2020, 13:50 Options

Daten in neue Datenbank kopieren

Hallo allerseits,


ich würde gerne Daten von einer Datenbank in eine andere einfügen.

Habe dazu eine Abfrage, welche mir bestimmte Datensätze ausgibt und diese möchte ich in eine neue einfügen.

Also so:

$ask = "SELECT deutsch, griechisch FROM word GROUP BY deutsch, griechisch;";
$re = @mysql_query($ask);
$data = mysql_fetch_array($re);
for ($i=0;$i<count($data["deutsch"]);$i++) {
mysql_query("INSERT INTO kurz (deutsch, griechisch) VALUES ('".$data["deutsch"][$i]."', '".$data["griechisch"][$i]."')");
}


Aber dabei wird nicht der ganze Array $data, sondern immer nur das erste Wort des Arrays in eine Spalte geschrieben.

Wie würdet ihr es machen?


Gruß,

Üsch


Antwort schreiben

Antwort 1 von son_quatsch vom 03.03.2020, 08:29 Options

$ask= "SELECT deutsch, griechisch FROM word GROUP BY deutsch, griechisch";
$re= mysql_query($ask) or die('abfrage fehlgeschlagen'. mysql_error());

while ($datensatz= mysql_fetch_array($re, MYSQL_BOTH)) {
mysql_query("INSERT INTO kurz(deutsch, griechisch) VALUES('". $datensatz["deutsch"]."', '". $datensatz["griechisch"]."')") or die('abfrage fehlgeschlagen'. mysql_error());
}

mysql_free_result($re);


- Semikola haben in den SQL-Statements nichts zu suchen
- Entweder lässt du dir einmal alle Datensätze zurückgeben und kannst dann darauf eine FOR-Schleife anwenden, oder du machst es datensatzweise mit einer WHILE-Schleife - ein Mix aus beidem geht nicht

Antwort 2 von Uesch vom 03.03.2020, 16:39 Options

Vielen Dank, das hat erstmal gefunzt. Die Sache ist nur die, die griechischen Vokabeln sind teilweise anders gespeichert. Also z.B. gibt es das Wort "Elxy" so geschrieben: &#949;&#961;&#947;&#959;&#948;&#972;&#964;&#951;&#962;
Und es gibt das Wort "Elxy" so geschrieben: &#x03B5;&#x03C1;&#x03B3;&#x03BF;&#x03B4;&#x03CC;&#x03C4;&#x03B7;&#x03C2;

Die beiden Wörter heißen genau das gleiche und sehen auch genau gleich aus, wenn sie in Buchstaben umgewandelt worden sind.

Gibt es eine Möglichkeit, vor dem GROUP BY, die obere Form umzuwandeln, dass sie der unteren entspricht, also irgendsowas wie decode..?


Gruß,

Üsch

Antwort 3 von rabies vom 03.03.2020, 20:20 Options

Wieso speicherst Du die Wörter nicht in einem passenden Format? UTF8? ... Dann könntest Du Dir die wirren Zeichen in der Datenbank ersparen.

Antwort 4 von Supermax vom 03.03.2020, 22:04 Options

Wenn die Struktur der beiden Tabellen gleich ist, geht es auch ohne den Umweg über PHP mit der SQL-Anweisung
INSERT INTO neue_tabelle(spalte1,spalte2) SELECT spalte1alt,spalte2alt FROM alte_tabelle WHERE [i]bedingung[/i]
.

Allerdings würde ich dir ebenfalls raten - wie bereits von "rabies" vorgeschlagen - eine für internationale Zeichensätze geeignete Textcodierung in deiner Datenbank einzusetzen. UTF-8 ist hierfür ein geeigneter Standard, obwohl hier besonders im Zusammenspiel mit PHP einige Fallstricke lauern.

Ähnliche Themen

Festplatten kopieren IDE auf SATA
zaratustra  20.01.2007 - 96 Hits - 6 Antworten

Automatische Durchführung von Abfragen
Sandy13  17.08.2007 - 36 Hits - 1 Antwort

festplette kopieren
ratlosvormpc  08.02.2008 - 37 Hits - 1 Antwort

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 01:23:17 2026