protected function InsertRowsIndividually(IConnection $Connection, Table $Table, array $Rows, callable $PostIndividualInsertCallback)
{
$TableName = $Table->GetName();
$Columns = $Table->GetColumns();
$ColumnNames = array_keys($Columns);
$QueryBuilder = $Connection->QueryBuilder();
$this->AppendInsert($QueryBuilder, $TableName, $ColumnNames);
$QueryBuilder->Append('(');
foreach ($QueryBuilder->Delimit($Columns, ',') as $Column) {
$QueryBuilder->AppendColumnData($Column, null);
}
$QueryBuilder->Append(')');
$PreparedInsert = $QueryBuilder->Build();
$Bindings = $PreparedInsert->GetBindings();
$ColumnValues = array_values($Columns);
$ParameterTypes = $this->GetParamterTypes($ColumnValues);
foreach ($Rows as $Row) {
foreach ($ColumnValues as $Count => $Column) {
$Value = $Row[$Column];
$Bindings->Bind($Value, $Value === null ? ParameterType::Null : $ParameterTypes[$Count], $Count);
}
$PreparedInsert->Execute();
$PostIndividualInsertCallback($Row);
}
}