public function multipleInsert($data) { if (!$data) { return true; } $values = array(); $fields = array(); if (isset($data[0])) { foreach ($data as $row) { $row_values = array(); foreach ($row as $field => $value) { if (isset($this->fields[$field])) { $row_values[$this->escapeField($field)] = $this->getFieldValue($field, $value); } } if (!$fields) { $fields = array_keys($row_values); } $values[] = implode(',', $row_values); } } else { $multi_field = false; $row_values = array(); foreach ($data as $field => $value) { if (isset($this->fields[$field])) { if (is_array($value) && !$multi_field) { $multi_field = $field; $row_values[$this->escapeField($field)] = ''; } else { $row_values[$this->escapeField($field)] = $this->getFieldValue($field, $value); } } } $fields = array_keys($row_values); if ($multi_field) { foreach ($data[$multi_field] as $v) { $row_values[$this->escapeField($multi_field)] = $this->getFieldValue($multi_field, $v); $values[] = implode(',', $row_values); } } else { $values[] = implode(',', $row_values); } } if ($values) { return $this->adapter->multipleInsert($this->table, $fields, $values); } return true; }