add insertUpdate() function for "insert ... on duplicate key update" behavior

This commit is contained in:
Sergey Tsalkov
2011-09-23 19:15:41 -07:00
parent 9f3aa571dc
commit 5050205e58
2 changed files with 31 additions and 0 deletions

View File

@@ -215,6 +215,11 @@ class DB
if (isset($options['ignore']) && $options['ignore'] && strtolower($which) == 'insert') {
DB::queryNull("INSERT IGNORE INTO $table ($keys_str) VALUES $values_str");
} else if (isset($options['update']) && $options['update'] && strtolower($which) == 'insert') {
$updatestr = call_user_func_array('DB::parseQueryParams', $options['update']);
DB::queryNull("INSERT INTO $table ($keys_str) VALUES $values_str ON DUPLICATE KEY UPDATE $updatestr");
} else {
DB::queryNull("$which INTO $table ($keys_str) VALUES $values_str");
}
@@ -224,6 +229,13 @@ class DB
public static function insertIgnore($table, $data) { return DB::insertOrReplace('INSERT', $table, $data, array('ignore' => true)); }
public static function replace($table, $data) { return DB::insertOrReplace('REPLACE', $table, $data); }
public static function insertUpdate() {
$args = func_get_args();
$table = array_shift($args);
$data = array_shift($args);
return DB::insertOrReplace('INSERT', $table, $data, array('update' => $args));
}
public static function delete() {
$args = func_get_args();
$table = self::formatTableName(array_shift($args));