选择语言 :

 Driver_Database_Driver_MySQL::_compile_insert

Compile the SQL query and return it.

string Driver_Database_Driver_MySQL::_compile_insert( )
返回值
  • string
File: ./drivers/database/mysql/mysql.class.php
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;
}