/ / CodeIgniter Active Record Einfügen von einer Tabelle in eine andere - PHP, MySQL, Codeigniter

CodeIgniter Active Record Einfügen von einer Tabelle in eine andere - PHP, MySQL, Codeigniter

Was ist die Syntax zum Einfügen von Daten von einemTabelle zu einer anderen Tabelle mit Codeigniter Active Record Syntax? Ich habe die übliche mysqli-Abfrage ausprobiert und es funktioniert, aber ich möchte aus Konsistenzgründen die CodeIgniter Active Record-Syntax verwenden.

Ich habe versucht, mit diesen CodeIgniter Active Record-Abfragen zu spielen, aber immer noch kein Glück:

function insert_into()
{
$this->db->insert("table1");
$this->db->set("to_column");
$this->db->select("from_column");
$this->db->from("table2");
}

Antworten:

12 für die Antwort № 1

Ich denke, das Beste, um das zu erreichen, istWenn Sie die gewünschten Daten mit der get-Methode aus einer Tabelle abrufen und anschließend eine der Funktionen zur Ergebniserfassung (wie result ()) verwenden, durchlaufen Sie die Zeilen nacheinander mit der insert () -Methode.

Code eingeben:

$query = $this->db->get("table1");
foreach ($query->result() as $row) {
$this->db->insert("table2",$row);
}

Natürlich nehme ich an, dass table1 genau th hatgleiche Struktur wie Tabelle2 (gleiche Spaltennamen und Datentypen für jede Spalte). Ist dies nicht der Fall, müssen Sie die Spalten mithilfe von Zuweisungen einer Tabelle in eine andere zuordnen. Ist dies jedoch der Fall, ist der Code breiter.


2 für die Antwort № 2

Kopiert $ source_table in $ archive_table:

if(($this->db->table_exists($source_table) && ($this->db->table_exists($archive_table)){
if ($this->db->query("CREATE TABLE $archive_table LIKE $source_table")){
if($this->db->query("INSERT $archive_table SELECT * FROM $source_table")){
echo "copied ok";
}
}
}

Besser, als die gesamte Ergebnismenge zu durchlaufen und jeweils eine Zeile einzufügen.