function create(&$xmls)
{
$table = $xmls->dict->TableName($this->parent->name);
$table_field_count = count($this->parent->fields);
$sql = array();
// eliminate any columns that aren't in the table
foreach ($this->data as $row) {
$table_fields = $this->parent->fields;
$fields = array();
foreach ($row as $field_id => $field_data) {
if (!array_key_exists($field_id, $table_fields)) {
if (is_numeric($field_id)) {
$field_id = reset(array_keys($table_fields));
} else {
continue;
}
}
$name = $table_fields[$field_id]['NAME'];
switch ($table_fields[$field_id]['TYPE']) {
case 'C':
case 'C2':
case 'X':
case 'X2':
$fields[$name] = $xmls->db->qstr($field_data);
break;
case 'I':
case 'I1':
case 'I2':
case 'I4':
case 'I8':
$fields[$name] = intval($field_data);
break;
default:
$fields[$name] = $field_data;
}
unset($table_fields[$field_id]);
}
// check that at least 1 column is specified
if (empty($fields)) {
continue;
}
// check that no required columns are missing
if (count($fields) < $table_field_count) {
foreach ($table_fields as $field) {
if (isset($field['OPTS'])) {
if ((in_array('NOTNULL', $field['OPTS']) || in_array('KEY', $field['OPTS'])) && !in_array('AUTOINCREMENT', $field['OPTS'])) {
continue 2;
}
}
}
}
$sql[] = 'INSERT INTO ' . $table . ' (' . implode(',', array_keys($fields)) . ') VALUES (' . implode(',', $fields) . ')';
}
return $sql;
}