Może jeszcze raz , żeby zrozumieć motyw działania:
1. Pobieram z inputa nazwy plików:
<input class="input-file" id="my-file" name="upload[]" type="file" multiple>2. Pętlą FOR liczę i tworzę tablicę z nazwami tychże plików
for($i=0; $i<count($_FILES['upload']['name']); $i++) {
$tmpFilePath = $_FILES['upload']['tmp_name'][$i];
}3. zapisuje te nazwy w zmiennej
$shortname = $_FILES['upload']['name'][$i];4. Uzyskuję rozszerzenia i sprawdzam czy pasują do rozszerzeń, na które możemy pozwolić do przesłania
$info = new SplFileInfo($_FILES['upload']['name'][$i]);
$ext = '.' . $info->getExtension();
$check_ext = $info->getExtension();
$ext_allow= array("gif","tif","tiff","jpeg","jpg","png","pdf","exe","zip","rar","txt");5. Jeśli pasują - to nadajemy im nowe nazwy i przesyłamy do katalogu "$autor/".$newname;
if (in_array($check_ext,$ext_allow, TRUE)){
$prefix = bin2hex(random_bytes(4));
$newname = $prefix . time() . $ext;
$filePath = "$autor/".$newname;
}6. Później tą tablicę files[] serializujemy i wpisujemy do kolumny
img tam gdzie wiersz odpowiada nazwie autora.
$files[] = $shortname;
$serialized_files = serialize($files);
$save = "UPDATE `diypartner` SET `img` = '$serialized_files' WHERE `diypartner`.`nki` = '$nk'";
mysqli_query($db, $save);
7. Efekt jest taki, że później na innej stronie chcąc wyciągnąć wpisy tego autora wyświetli nam się to co wpisał w formularzu i dodatkowo jakie pliki przesłał. A informacja i plikach znajduje się tylko w jednym zapisie

[.... tutaj oczywiście łączymy z bazą danych... ]
$unserialized_array = unserialize($row[6]);
foreach ($unserialized_array as $value) {
echo '<img src="'.$row[2]."/".$value.'"/>';
}8. Koniec.
Problem:
Z formularza pochodzą oryginalne nazwy plików punkt 3.
Później je zmieniam na losowe + data + rozszerzenie punkt 5.
a do bazy przesyłam sobie array $files[] = $shortname; i wpis w bazie wygląda tak :
a:5:{i:0;s:9:"1star.png";i:1;s:9:"2star.png";i:2;s:9:"3star.png";i:3;s:9:"4star.png";i:4;s:9:"5star.png";}I zgubiłem się, dlaczego przesyła oryginalne nazwy plików.