SQL-Werte von Tabelle A zu Tabelle B kopieren

julia29

Erfahrenes Mitglied
Hallo,
ich möchte Feldinhalte von Tabelle A zu Tabelle B kopieren. Tabelle B hat natürlich die gleiche Struktur wie Tabelle A.

Habe mal folgenden Ansatz versucht:
PHP:
error_reporting(E_ALL);
$DatabaseHost = "localhost";  
$DatabaseUser = "xxx";  
$DatabasePassword = "xxx";  
$Database = "xxx";  
$table = "tab1";

$dbverbindung = mysql_connect ($DatabaseHost, $DatabaseUser, $DatabasePassword); 

//Abfrage in Quell-Tabelle 
$abfrage = mysql_query("SELECT * 
FROM tab1 
WHERE feld7 = '2'
"); 

//Für Ziel-Tabelle
while($row = mysql_fetch_object($abfrage)) 
{ 
$insert = mysql_query("INSERT INTO tab2 SET 
feld1='$row->feld1', 
feld2='$row->feld2',
feld3='$row->feld3', 
feld4='$row->feld4',
feld5='$row->feld5', 
feld6='$row->feld6',
feld7='$row->feld7' ") or die (mysql_error()); 
} 
?>

Anschließend wird jedoch folgende Warnung ausgegeben:

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/xxxx/html/kopieren.php on line 19

Was muss ich wie ändern?
mfg Julia
 
Wieso machst du das überhaupt so umständlich? Wesentlich einfacher und effizienter:

Code:
INSERT INTO tab2
  SELECT * FROM tab1
    WHERE feld7 = '2'
 
Ist es da nicht einfacher einfach einen trigger zu verwenden ?

Auserdem sehe ich wenig sin darin sowas über php zu lösen.
Bzw. stellt sich die Frage warum du überhaupt einen Tabellen inhalt kopieren möchtest.

Mfg Splasch
 
Ist es da nicht einfacher einfach einen trigger zu verwenden ?

Auserdem sehe ich wenig sin darin sowas über php zu lösen.
Bzw. stellt sich die Frage warum du überhaupt einen Tabellen inhalt kopieren möchtest.

Mfg Splasch

Tabelle A ist nur für eine Vorprüfung, erst wenn alles korrekt eingestellt ist soll es zur Tabelle B kopiert werden und dann in Tabelle A löschen.
Zur Tabelle A haben bestimmte Personen Zugang, aber nicht zur Tabelle B.
Es ist einfach sauberer, wenn die geprüften Daten in einer 2. Tabelle liegen.
Hatte auch schon an csv-export - csv-import gedacht, ist aber noch umständlicher.
Mit Trigger kenn ich mich nicht aus.
mfg
Julia
 
Wieso machst du das überhaupt so umständlich? Wesentlich einfacher und effizienter:

Code:
INSERT INTO tab2
  SELECT * FROM tab1
    WHERE feld7 = '2'

Hallo benjava,
stimmt sieht erheblich effizienter aus, aber die Warnung bleibt.

PHP:
$dbverbindung = mysql_connect ($DatabaseHost, $DatabaseUser, $DatabasePassword); 

while($row = mysql_fetch_object($insert)) 
{ 
$insert = mysql_query("INSERT INTO tab2 SELECT * FROM tab1 WHERE feld7 = '2'") or die (mysql_error()); 
} 

?>
 
Weil die Variable $insert vor der While nicht existiert.
Beim ersten mal greift mysql_fetch_object also ins leere.
Unkompliziert nur mit mysql_query oder besser mysql_unbuffered_query ausführen.
Mehr nicht.
 
ist ja nun wirklich überschaubar, auch die Verbindung zur Datenbank war natürlich da, nur es geht noch nicht.

Hier nochmals meine paar Zeilen:
PHP:
<?PHP 		//Daten von Tabelle A in Tabelle B
error_reporting(E_ALL);
$DatabaseHost = "localhost";  
$DatabaseUser = "xxx";  
$DatabasePassword = "xxx";  
$Database = "xxx";  
$table = "tab1";

$dbverbindung = mysql_connect ($DatabaseHost, $DatabaseUser, $DatabasePassword); 

@mysql_query("INSERT INTO tab2 SELECT * FROM tab1");

?>

Danach sollten nun alle Datensätze von tab1 zu tab2 wandern, aber es tut sich noch nichts.
 
Zurück