public function insert($table, $columnValues)
{
if (count($columnValues) === 0) {
throw new DbException('Unable to insert into :table table without data', ['table' => $table]);
}
$escapedTable = $this->escapeIdentifier($table);
if (array_key_exists(0, $columnValues)) {
$insertedValues = rtrim(str_repeat('?,', count($columnValues)), ',');
$sql = "INSERT INTO {$escapedTable} VALUES ({$insertedValues})";
} else {
$columns = array_keys($columnValues);
$insertedValues = ':' . implode(',:', $columns);
$insertedColumns = '`' . implode('`,`', $columns) . '`';
$sql = "INSERT INTO {$escapedTable} ({$insertedColumns}) VALUES ({$insertedValues})";
}
$this->execute($sql, $columnValues);
}