public function delete(Dbi_Model $query) { $components = $query->components(); $delete = new Dbi_Sql_Query_Delete(); $delete->table($query->prefix() . $components['table']); foreach ($components['where'] as $where) { $orStatements = array(); $orParameters = array(); foreach ($where->expressions() as $or) { $orStatements[] = $or->statement(); $orParameters = array_merge($orParameters, $or->parameters()); } $args = array_merge(array(implode(' OR ', $orStatements)), $orParameters); call_user_func_array(array($delete, 'where'), $args); } $expression = $delete->expression(); $this->_execute($delete); }
protected function _generateSql(Dbi_Model $query) { //$select = new BuildSql_Select('mysqli_real_escape_string'); $select = new Dbi_Sql_Query_Select(); $components = $query->components(); // Table $select->table($query->prefix() . $components['table'] . ' AS ' . $components['table']); $this->_build($select, $query, $components); if (count($components['orders'])) { $fixedOrders = array(); foreach ($components['orders'] as $order) { $parts = explode(' ', $order); if (strpos($parts[0], '.') === false && strpos($parts[0], '(') === false) { //$parts[0] = "{$components['table']}.{$parts[0]}"; } $fixedOrders[] = implode(' ', $parts); } $select->order(implode(', ', $fixedOrders)); } if (is_array($components['limit'])) { $select->limit(implode(',', $components['limit'])); } return $select; }
public function delete(Dbi_Model $query) { self::$queryCount++; $components = $query->components(); $delete = new BuildSql_Delete(); $delete->table($query->prefix() . $components['table']); foreach ($components['where'] as $where) { $orStatements = array(); $orParameters = array(); foreach ($where->expressions() as $or) { $orStatements[] = $or->statement(); $orParameters = array_merge($orParameters, $or->parameters()); } $args = array_merge(array(implode(' OR ', $orStatements)), $orParameters); call_user_func_array(array($delete, 'where'), $args); } mysql_query($delete->query()); if (mysql_error()) { throw new Exception(mysql_error()); } }