Compile the SQL query and return it.
string Driver_Database_Driver_MySQL::_compile_insert( )
string
protected function _compile_insert($builder, $type = 'INSERT')
{
if ($type != 'REPLACE')
{
$type = 'INSERT';
}
// Start an insertion query
$query = $type . ' INTO ' . $this->quote_table($builder['table'], false);
// Add the column names
$query .= ' (' . implode(', ', array_map(array($this, '_quote_identifier'), $builder['columns'])) . ') ';
if (is_array($builder['values']))
{
// Callback for quoting values
$quote = array($this, 'quote');
$groups = array();
foreach ($builder['values'] as $group)
{
foreach ($group as $i => $value)
{
if (is_string($value) && isset($builder['parameters'][$value]))
{
// Use the parameter value
$group[$i] = $builder['parameters'][$value];
}
}
$groups[] = '(' . implode(', ', array_map($quote, $group)) . ')';
}
// Add the values
$query .= 'VALUES ' . implode(', ', $groups);
}
else
{
// Add the sub-query
$query .= (string)$builder['values'];
}
if ($type == 'REPLACE')
{
//where
if (!empty($builder['where']))
{
// Add selection conditions
$query .= ' WHERE ' . $this->_compile_conditions($builder['where'], $builder['parameters']);
}
}
return $query;
}