iterar a través de los nombres de las columnas mientras se actualiza la tabla en mysql/cargas múltiples de archivos

Este es mi código para cargar varias imágenes en columnas con los nombres img0, img1, img2, img3, etc. ¿Cómo actualizar la tabla iterando los nombres de las columnas? ¿Necesito concatenar?

if(isset($_POST['submit'])){        
        $uploadsDir = "images/property/";
        $allowedFileType = array('jpg','png','jpeg');
        $error="";
        // Velidate if files exist
        if (!empty(array_filter($_FILES['fileUpload']['name']))) {
           $total= count($_FILES['fileUpload']['name']);
           if($total > 6){
               $error="please select less than 6 pictures";
           }
           // Loop through file items
            for($i=0; $i<$total; $i++){
                // Get files upload path
                $fileName        = $_FILES['fileUpload']['name'][$i];
                $tempLocation    = $_FILES['fileUpload']['tmp_name'][$i];
                $targetFilePath  = $uploadsDir . $fileName;
                $fileType        = strtolower(pathinfo($targetFilePath, PATHINFO_EXTENSION));
                $uploadOk = 1;
                if(in_array($fileType, $allowedFileType)){
                        if(move_uploaded_file($tempLocation, $targetFilePath)){
                            $sqlVal = "('".$fileName."')";
                        } else {
                            $error="uploading error";
                        }
                 } else {
                    $error="please select valid image";
                }
                // Add into MySQL database
                if(!empty($sqlVal)) {
          //the problem is here????????   
               $insert = $conn->query("UPDATE property (img???) VALUES $sqlVal");
                    if($insert) {
                        $error="success";
                    } else {
                        $error="database error";
                    }
                }
            }

        } else {
            $error="please select  pictures to upload";
        }
    } 

mi tabla tiene una columna con los nombres img0, img1, img2, img3, img4. Quiero actualizar cada imagen en una columna en particular, ¿puedo hacerlo con bucle?

Answer

Aquí hay un punto de partida. Deberá realizar algunos cambios ya que la pregunta no contiene suficiente información.

$query = 'UPDATE property set ';
if(empty($_FILES['fileUpload']['name']) || !is_array($_FILES['fileUpload']['name'])) {
    exit('Invalid Update');
} else {
    foreach($_FILES['fileUpload']['name'] as $key => $value){
        $query .= ' img' . $key . ' = ?, ';
    }
}
$query = rtrim($query, ', ');
$query .= ' WHERE ... = ?'; <--- fix this (Don't replace the ?, that is placeholder for value that the column should equal)
$insert = $conn->prepare($query);
$params = array_merge($_FILES['fileUpload']['name'], array('WHERE IDENTIFER')); <--- fix this
$stmt->bind_param(str_repeat('s', count($_FILES['fileUpload']['name']) . 's(WHERE DATA TYPE HERE)', ...$params); <-- fix this
$stmt->execute();

Otras notas:

Este diseño de base de datos va a causar problemas más adelante. Ver:

https://en.wikipedia.org/wiki/First_normal_form

Debe hacer más que verificar una extensión para verificar la integridad/seguridad del archivo:

Script de carga de imagen completamente seguro

(Si no ve la respuesta completa, navegue hasta instead of just relying on the Content-type headerun poco sobre la extensión del archivo)

Para obtener más información sobre declaraciones preparadas con MySQLi, consulte https://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php . Si recién comienza, podría considerar PDO. Se puede usar en múltiples sistemas de bases de datos y requiere menos código para crear/ejecutar declaraciones preparadas. Considerablemente menos cuando se recuperan datos, y el proceso de ejecución es mucho más claro que el de MySQLi.