aspire
Новичок
Вот код моей функции
Буду рад любым советам. Заранее спасибо.
PHP:
/**
* Записывает множество строк. Если строк более 1000, то занесение в бд происходит порциями по 1000 записей.
* @param $table string Наименование таблици
* @param $data array Ассоциативный массив в котором в первом элементе массива содержатся наименования столбцов, в осталных их значения
* @return boolean Если весь прайс записался то возвращаем TRUE иначе FALSE
*/
public function insertManyRows($table, array $data){
$result = true;
// Проверяем что нам дали не только названия столбцов но и сами данные
if(count($data) > 1){
$tmpCols = array_splice($data, 0, 1);
foreach($tmpCols as $val){
// Проставлляем `` вокруг наименований столбцов
$cols[] = $this->_setQuoteIdentifier($val);
}
$cols[] = $this->_setQuoteIdentifier($col);
while(count($data) != 0){
$sql = "INSERT INTO "
. $this->_setQuoteIdentifier($table)
. ' (' . implode(', ', $cols) . ') VALUES';
$tempMass = array_slice($data, 0, 1000, TRUE);
array_splice($data, 0, 1000);
$count = count($tempMass);
for($i = 0; $i < $count; $i++){
$vals = array();
foreach($tempMass[$i] as $val){
// Проставлляем '' вокруг переменных и прводим екранирование спецсимволов
$vals[] = $this->_setQuoteIdentifier($val);
}
if($count - 1 === $i){
$sql .= ' (' . implode(', ', $vals) . ')';
} else{
$sql .= ' (' . implode(', ', $vals) . '),';
}
}
if(!$this->query($query)){
$result = false;
}
}
} else {
$result = false;
//тут вывод ошибки если недостаточное количество строк в массиве
}
return $result;
}