/** Insert or update data in the table
* @param string
* @param array
+ * @param array
* @return bool
*/
- function insert_update($table, $set) {
+ function insert_update($table, $set, $indexes) {
foreach ($set as $key => $val) {
$set[$key] = "$key = $val";
}
return queries("INSERT INTO " . table($table) . ($set ? " (" . implode(", ", array_keys($set)) . ")\nVALUES (" . implode(", ", $set) . ")" : "DEFAULT VALUES"));
}
+ function insert_update($table, $set, $indexes) {
+ global $connection;
+ $primary = array();
+ foreach ($indexes as $index) {
+ if ($index["type"] == "PRIMARY") {
+ $primary = array_map("idf_escape", $index["columns"]);
+ break;
+ }
+ }
+ $update = array();
+ $where = array();
+ foreach ($set as $key => $val) {
+ $update[] = "$key = $val";
+ if (in_array($key, $primary)) {
+ $where[] = "$key = $val";
+ }
+ }
+ return ($where && queries("UPDATE " . table($table) . " SET " . implode(", ", $update) . " WHERE " . implode(" AND ", $where)) && $connection->affected_rows)
+ || queries("INSERT INTO " . table($table) . " (" . implode(", ", array_keys($set)) . ") VALUES (" . implode(", ", $set) . ")")
+ ;
+ }
+
function last_id() {
return 0; // there can be several sequences
}
return queries("INSERT INTO " . table($table) . ($set ? " (" . implode(", ", array_keys($set)) . ")\nVALUES (" . implode(", ", $set) . ")" : "DEFAULT VALUES"));
}
- function insert_update($table, $set) {
+ function insert_update($table, $set, $indexes) {
return queries("REPLACE INTO " . table($table) . " (" . implode(", ", array_keys($set)) . ") VALUES (" . implode(", ", $set) . ")");
}
foreach ($matches2[1] as $i => $col) {
$set[idf_escape($cols[$i])] = ($col == "" && $fields[$cols[$i]]["null"] ? "NULL" : $connection->quote(str_replace('""', '"', preg_replace('~^"|"$~', '', $col))));
}
- $result = insert_update($TABLE, $set);
+ $result = insert_update($TABLE, $set, $indexes);
if (!$result) {
break;
}