proverei richiamando la funzione mysql_insert_id() subito dopo la query:
Codice PHP:
function singleUpload($i, $recordID, $cartella, $maxSize, $acceptType) {
if ($_FILES['file']['name'][$i] != "") {
$destinazione = $cartella . $recordID . "_" . $_POST['category'] . "." . file_extension(basename($_FILES['file']['name'][$i]));
if ($_FILES['file']['size'][$i] <= $maxSize * 1024) {// da levare appena il resto funziona
if (in_array($_FILES['file']['type'][$i], $acceptType)) {
if (move_uploaded_file($_FILES['file']['tmp_name'][$i], $destinazione)) {
return "File caricato con successo!";
} else {
return "Errore nell'upload del file";
}
} else {
return "Tipo di file non accettato!";
}
} else {
return "Dimensione del file troppo grande, massima dimensione accettata: " . $maxSize . " kilobyte";
}
} elseif (isset($_POST['upload'])) {
return "Nessun file inserito!";
}
}
for ($i = 0; $i < count($_FILES['file']['name']); $i++) {
$query = 'insert into images (image_caption,image_date,image_category) values ("' . $image_caption . '","' . $image_date . '","' . $image_category . '")';
$result = mysql_query($query, $db) or die(mysql_error($db));
$last_id = mysql_insert_id();
echo "Risultato file " . ($i + 1) . ": " . singleUpload($i, $last_id, $cartella, $maxSize, $acceptType) . "
";
}
ps. un appunto: quando fai la query di insert, dovresti verificare di eseguirla solo nel caso in cui il file sia effettivamente stato uplodato, altrimenti ti potresti trovare dei dati incongruenti tra la base di dati e il file system (puoi anche usare una transazione)