wiec nie w zapytaniu update musisz sie odniesc do id wiersza przy pomocy where. Dlaczego: poniewaz to ze to jest wiersz x to wie php ale nie mysql do ktorego jest odniesione zapytanie czyli w petli wiesz ze to jest wiersz 5 tabeli ale robiac zapytanie mysql traktuje to jako zapytanie do calej tabeli wiec musisz podac where - uff

codo while to oczywiscie jeszcze lepiej by było gdybyś najpierw przygotował sobie zapytanie update przynajmniej dla kazdego wiersza tablei bo inaczej np teraz w przypadku 2 wierszy musisz wykonac 14 zapytań zeby zaktualizowac baze - moze nie jest to mordercze przy kilku wierszach ale jak bedziesz mial ich powiedzmy 1000 to bedzie 7000 zapytan do bazy danych. a poniewaz akurat mam przerwe w kodowaniu swojego projektu wiec:
<?php
$polecenie = "select * from access";
$wynik = mysqli_query($db, $polecenie);
$zm = $_POST['zm'];
if (mysqli_num_rows($wynik)>0) {
while ($wiersz = mysqli_fetch_array($wynik)) {
for($j=2; $j<=7; $j++) {
$dane[]=$wiersz[$j]."=".$zm[$i][$j];
}
$polecenie_update = "update access set ".$dane." WHERE id=".$wiersz['id'];
$wykonaj_update = mysqli_query($db, $polecenie_update);
}
}
}
?>
i to by było chyba na tyle

nie testowane wiec musisz sprobowac czy nie ma literowek bo jako sposob dziala na 100% - tak informacyjnie w petli for tworze tablice dane w ktora dodaje poszczególne kolumny wiersza z danymi po for robie implode (czyli zamieniam tablice na ciag znakow oddzielonych przecinkiem) i tworze zapytanie

moge zapewnic ze twoj serwer mysql odsapnie

pzdr i jakby co to postaram sie poprawic w miare czasu