Ejemplo n.º 1
0
 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;
 }