diff options
author | Andrey Andreev <narf@bofh.bg> | 2012-04-09 15:31:50 +0200 |
---|---|---|
committer | Andrey Andreev <narf@bofh.bg> | 2012-04-09 15:31:50 +0200 |
commit | 2271874d9c2bb4d5959f4287dea3c7c3b5b0c732 (patch) | |
tree | 2497c63c3252b1ace676c07585f32611b84cb16d /system/database/DB_active_rec.php | |
parent | 8e160e471259ad01c0e994e7ce5797c2a51afd7a (diff) | |
parent | 918be7963f6fa3461d612ea7ca4c9774c12f9da5 (diff) |
Merge upstream branch
Diffstat (limited to 'system/database/DB_active_rec.php')
-rw-r--r-- | system/database/DB_active_rec.php | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/system/database/DB_active_rec.php b/system/database/DB_active_rec.php index a19f9bedd..a5df7f31a 100644 --- a/system/database/DB_active_rec.php +++ b/system/database/DB_active_rec.php @@ -1546,17 +1546,25 @@ abstract class CI_DB_active_record extends CI_DB_driver { * @param array the where clause * @param array the orderby clause * @param array the limit clause + * @param array the like clause * @return string */ - protected function _update($table, $values, $where, $orderby = array(), $limit = FALSE) + protected function _update($table, $values, $where, $orderby = array(), $limit = FALSE, $like = array()) { foreach ($values as $key => $val) { $valstr[] = $key.' = '.$val; } + $where = empty($where) ? '' : ' WHERE '.implode(' ', $where); + + if ( ! empty($like)) + { + $where .= ($where === '' ? ' WHERE ' : ' AND ').implode(' ', $like); + } + return 'UPDATE '.$table.' SET '.implode(', ', $valstr) - .(($where != '' && count($where) > 0) ? ' WHERE '.implode(' ', $where) : '') + .$where .(count($orderby) > 0 ? ' ORDER BY '.implode(', ', $orderby) : '') .($limit ? ' LIMIT '.$limit : ''); } @@ -1865,6 +1873,31 @@ abstract class CI_DB_active_record extends CI_DB_driver { // -------------------------------------------------------------------- /** + * Delete statement + * + * Generates a platform-specific delete string from the supplied data + * + * @param string the table name + * @param array the where clause + * @param array the like clause + * @param string the limit clause + * @return string + */ + protected function _delete($table, $where = array(), $like = array(), $limit = FALSE) + { + $conditions = array(); + + empty($where) OR $conditions[] = implode(' ', $where); + empty($like) OR $conditions[] = implode(' ', $like); + + return 'DELETE FROM '.$table + .(count($conditions) > 0 ? ' WHERE '.implode(' AND ', $conditions) : '') + .($limit ? ' LIMIT '.$limit : ''); + } + + // -------------------------------------------------------------------- + + /** * DB Prefix * * Prepends a database prefix if one exists in configuration |