Schönen guten Morgen allerseits!
Ich habe den Fall, dass man einen MySQL-Datansatz über eine Weboberfläche dublizieren können muss.
Mein bisheriger Ansatz sieht folgendermaßen aus:
Daraufhin folgt aber folgender MySQL Error:
Ich könnte zwar statt des "SELECT *" ein "SELECT field_1, field_2, ... field_n" nehmen und dabei das Feld "id" aussparen, aber es wäre schon schneller + einfacher, würde man alles selektieren, da ich circa 20 verschiedene Tabellenstrukturen habe und so dann erstmal durch eine "switch/case"-Geschichte laufen müsste um den entsprechenden Query zu nutzen, da jede dieser 20 Tabellen eine andere Struktur besitzt.
Daher meine Frage: Wie bekomme ich den "SELECT *"-Query vernünftig zum laufen, sodass wirklich die komplette Zeile dubliziert wird (Ausnahme: Das "id"-Feld) ?
Vielen Dank im voraus für eure Tipps!
(PS.: Ja, ich bin mir über die Tatsache von redundanten Daten et cetera bewusst, brauche diese Funktionalität aber
)
Ich habe den Fall, dass man einen MySQL-Datansatz über eine Weboberfläche dublizieren können muss.
Mein bisheriger Ansatz sieht folgendermaßen aus:
PHP:
<?php
global $IN, $DB, $REGX;
$id = $DB->escape_str($REGX->xss_clean($IN->GBL('id', 'POST')));
$table = $DB->escape_str($REGX->xss_clean($IN->GBL('table', 'POST')));
$query = $DB->query("INSERT INTO {$table}
SELECT * FROM {$table} AS to_copy
WHERE to_copy.id = {$id}
ON duplicate key
UPDATE id = id + 1");
$json['entry_id'] = $DB->insert_id;
if ($query)
{
$json['status'] = 'copied';
}
else
{
$json['status'] = 'error';
$json['sql'] = $sql;
}
echo utf8_encode(json_encode($json));
?>
Daraufhin folgt aber folgender MySQL Error:
Code:
Error Number: 1052
Description: Unknown column 'id' in 'field list'
Query: INSERT INTO foobar
SELECT * FROM foobar AS to_copy
WHERE to_copy.id = 393
ON duplicate key
UPDATE id = id + 1
Ich könnte zwar statt des "SELECT *" ein "SELECT field_1, field_2, ... field_n" nehmen und dabei das Feld "id" aussparen, aber es wäre schon schneller + einfacher, würde man alles selektieren, da ich circa 20 verschiedene Tabellenstrukturen habe und so dann erstmal durch eine "switch/case"-Geschichte laufen müsste um den entsprechenden Query zu nutzen, da jede dieser 20 Tabellen eine andere Struktur besitzt.
Daher meine Frage: Wie bekomme ich den "SELECT *"-Query vernünftig zum laufen, sodass wirklich die komplette Zeile dubliziert wird (Ausnahme: Das "id"-Feld) ?
Vielen Dank im voraus für eure Tipps!
(PS.: Ja, ich bin mir über die Tatsache von redundanten Daten et cetera bewusst, brauche diese Funktionalität aber

Zuletzt bearbeitet: