Как сделать php цикл в БД c добавлением значений из Excel?

214
25 мая 2018, 16:00

подскажите как зациклить такую операцию с добавлением значений в базу данных? Есть файл Excel собирающий значения с других файлов. Он содержит 4 столбца где в столбце: A-номер, B-показатель1, С-показатель2, D-показатель3. Доступ ко всем параметрам получаю через getCalculatedValue() В столбце будет более 200 значений. Как получить значения из строки понятно, делаю так:

$file = 'Result.xls';
$objPHPExcel = PHPExcel_IOFactory::load($file); 
$project_number = $objPHPExcel->getActiveSheet(0)->getCell('A1')->getValue();
$par1 = $objPHPExcel->getActiveSheet(0)->getCell('B1')->getCalculatedValue();
$par2 = $objPHPExcel->getActiveSheet(0)->getCell('C1')->getCalculatedValue();
$par3 = $objPHPExcel->getActiveSheet(0)->getCell('D1')->getCalculatedValue();

И далее делаю запрос на вставку всех параметров(par1 par2 par3 в столбцы базы данных, если номер в бд равен номеру в столбце A

$sql = "UPDATE project_registry SET green_points = '$par1', yellow_points = '$par2', red_points = '$par3'
WHERE project_number = '$project_number'";
$result_set = sqlsrv_query($conn, $sql);
Answer 1

Спасибо всем за подсказки, решил вопрос следующим путем.

Сформировал многомерный массив по паре ключ => строка со значениями A,B,C,D

$sheet = $objPHPExcel->getActiveSheet();
$array_data = array();
foreach($sheet->getRowIterator() as $row){
    $rowIndex = $row->getRowIndex ();
    $array_data[$rowIndex] = array('A'=>'', 'B'=>'','C'=>'','D'=>'');
    $cell = $sheet->getCell('A' . $rowIndex);
    $array_data[$rowIndex]['A'] = $cell->getCalculatedValue();
    $cell = $sheet->getCell('B' . $rowIndex);
    $array_data[$rowIndex]['B'] = $cell->getCalculatedValue();
    $cell = $sheet->getCell('C' . $rowIndex);
    $array_data[$rowIndex]['C'] = $cell->getCalculatedValue();
    $cell = $sheet->getCell('D' . $rowIndex);
    $array_data[$rowIndex]['D'] = $cell->getCalculatedValue();
}

На выводе print_r($array_data[1]) получил строку со значениями в ячейках (A1:D1);

Далее собрал в цикл:

for ($i = 1; $i <= count($array_data); $i++) {
     $sql = "UPDATE project_registry SET green_points =".$array_data[$i]['B'].", yellow_points = ".$array_data[$i]['C'].", red_points = ".$array_data[$i]['D']." WHERE project_number = ".$array_data[$i]['A']." ";
     $result_set = sqlsrv_query($conn, $sql);  
      print_r($sql);
}
READ ALSO
Wordpress, как получить ссылку на страницу [закрыт]

Wordpress, как получить ссылку на страницу [закрыт]

Есть задача, надо создать функцию которая будет возвращать ссылку на страницу

160
Окргуление до десятых в php

Окргуление до десятых в php

подскажите пожалуйста, как округлить полученный результат до десятых?

220
pdo ограничение количества записей в базе

pdo ограничение количества записей в базе

Задача хранить некую статистику на 30 дней в БДДабы не нагружать ее лишним хламом требуется в базе иметь не более 30 записей

203
Error updating record: You have an error in your SQL syntax

Error updating record: You have an error in your SQL syntax

Выдает такую ошибку

189