Почему он не показывает количество обновленных реестров?

С формульного отправления оцени в массиве, чтобы обновлять мою таблицу:

$codigos = $_POST['codigo'];
$nombres_old = $_POST['nombre_old'];
$nombres_new = $_POST['nombre_new'];

foreach($codigos as $codigo){
    $nombre_old = $nombres_old[$codigo];
    $nombre_new = $nombres_new[$codigo];

    $sql = "UPDATE tabla SET nom_old = '$nombre_old', nom_new = '$nombre_new' WHERE cod = $codigo";
    $sth1 = $BD->prepare($sql);
    $sth1->execute();
}
$_SESSION['CantRegCambiados'] = $sth1->rowCount();
echo $_SESSION['CantRegCambiados']; 

UPDATE функционирует. То, что не функционирует, состоит в том, чтобы показывать количество обновленных реестров. Всегда он показывает мне 1 (Так я ничего не обновил). Код - integer.

1
задан 19.01.2017, 00:06
0 ответов

Он изменил бы твой код таким образом, так как он возвращает тебя всегда 1 сделав UPDATE с $sth1->rowCount();:

$count = 0;

foreach($codigos as $codigo){

  // tu código   

  if ($sth1->execute()) {

     $count++; // Sumamos uno, si ha sido exitoso el update
  }      
}

$_SESSION['CantRegCambiados'] = $count; // Total de los updates realizados
1
ответ дан 03.12.2019, 17:37
  • 1
    Анализируя có я говорю, смоги состоять в том, что он всегда показывает мне 1, потому что он только обновляет реестр из-за каждого iteració n. Так как в других массовых update, чем не está n внутри цикла, rowcount () показывает правильное количество обработанных реестров. –  19.01.2017, 00:49
  • 2
    @Piropeator - Точный... así он... привет –  19.01.2017, 00:57