Okay, ich habe es geschafft, eine "saubere" Lösung zu finden, indem ich Codeigniter's join, set usw. verwende. Was also cool ist, ist, dass Sie alle Vorteile von CI haben, wenn Sie $this->db->join(), $this->db- verwenden.>join() usw. wie das Escapezeichen und das Hinzufügen von Anführungszeichen.
Erledige also zuerst all deine CI-Sachen:
$this->db->join(..) // Set all your JOINs
$this->db->set(..) // Set your SET data
$this->db->where(..) // Set all your WHEREs
Dann können Sie die Abfrage mit den fertigen, bereinigten und maskierten Abfrageelementen von Active Record erstellen:
// JOIN
$sql = "UPDATE $this->baseTable ";
$sql .= implode(' ', $this->db->ar_join);
// SET
$sql .= ' SET';
$setArray = array();
foreach ($this->db->ar_set as $column=>$newValue)
array_push($setArray, " $column = $newValue");
$sql .= implode(',', $setArray);
// WHERE
$sql .= ' WHERE '.implode(' ', $this->db->ar_where);
$this->db->query($sql);
Wenn jemand eine bessere Lösung hat, akzeptiere ich sie gerne und verwende sie stattdessen