Validar la consulta de entrada de archivo múltiple mysql

Mi escenario es así:

<input type="file" name="image[]" />
<input type="file" name="image[]" />
<input type="file" name="image[]" />
<input type="file" name="image[]" />

Mi tabla de campo de la base de datos es:

ID = 1
image1 = image1.jpg
image2 = image2.jpg
image3 = image3.jpg
image4 = image4.jpg

Digamos que la fila id = 1 ya ha insertado los valores previamente y si el usuario desea actualizar image1 e image 4 para que naveguen y seleccionen el archivo de imagen que desean y dejan la imagen2 y la imagen3 en blanco.

Aquí está el concepto después de ejecutar la consulta de mysql:

ID = 1
image1 = newimage1.jpg
image2 = image2.jpg
image3 = image3.jpg
image4 = newimage4.jpg

¿Cómo hago la consulta de validación?

Actualmente mi código es así y no tengo idea de cómo continuar desde aquí ya que todavía soy nuevo en PHP/mysql.

foreach ($_FILES['product_image']['name'] as $key => $value) {
if(!empty($value)) {
                `$upt=mysql_query("update products_list set` `image1='$pic1',image2='$pic2',image3='$pic3',image4='$pic4' where id='$id'");`
}
}

Espero que esto esté claro para ustedes, chicos. Gracias por adelantado. =)

0

2 Respuestas

Puede usar un contador para actualizar el campo correcto:

 foreach ($_FILES['product_image']['name'] as $key => $value) {
   if(!empty($value)) {
       //field names starts from 1
        $field = 'image'.($key+1);
        mysql_query("UPDATE product_list ".
                    "SET $field = '$value' ".
                    "WHERE id = $id");
   }
 }

Por supuesto, esto significaría que tendría que actualizar el mismo registro hasta cuatro veces, dependiendo de lo que se envíe desde su formulario. Además, debe escapar de la entrada del usuario usando algo como mysql_escape_string() .

1
agregado
Gracias por la ayuda. Si lo entiendo correctamente, el campo SET $ está actualizando campos en función de la cantidad de entradas que tengo. Si tengo 4 entradas de archivos, ¿así llamará la actualización a 4 campos con solo esa declaración? ¿Y es posible agregar 1 a $ key? Porque la matriz comienza desde 0 ¿verdad? ¿O la única forma es editar mi campo de base de datos?
agregado el autor Dr3am3rz, fuente
De todos modos, lo probé y está funcionando !! Muchas gracias por la ayuda, se ha quedado atascado en esto durante 2 días. = (Pero aún averiguando cómo agregar el valor de la matriz $ key.
agregado el autor Dr3am3rz, fuente
¡Hola, muchas gracias! He usado if ($ key <4) {$ key ++;} justo ahora ... jaja ... Pero usaré tu método. ¡¡Muchas gracias!! = D
agregado el autor Dr3am3rz, fuente
Ya lo he marcado, pero no puedo votar porque dice que necesito 15 representantes para votar. = (
agregado el autor Dr3am3rz, fuente
@ user1462863 - Actualicé mi respuesta.
agregado el autor Cyclonecode, fuente
@ user1462863 - Si esta respuesta lo ayuda a considerar la votación ascendente y marcarla como correcta.
agregado el autor Cyclonecode, fuente

Creo que sería mejor tener la tabla product_images . De esta forma, un producto podría tener 1 o muchas imágenes. Su formulario podría permanecer igual, pero solo asociaría los products.id con cada uno de los registros en su nueva tabla de imágenes.

Al agregar un producto nuevo, creará el producto y luego insertará un registro de imagen para cada imagen que cargaron en el formulario.

Al editar un producto, puede eliminar fotos o agregar nuevas con facilidad.

// remove an image
mysql_query("delete from product_images where product_id=$pid and id=$iid");

// add a new image
mysql_query("insert into product_images (product_id, image) values ($pid, '$filename')");

Nota: estas consultas no se deben usar directamente. Asegúrese de tomar las precauciones adecuadas para evitar la inyección de SQL.

0
agregado
Gracias por la ayuda. Todavía no lo entiendo, porque todavía tengo otro campo de entrada al lado de las imágenes.
agregado el autor Dr3am3rz, fuente
PHP - Comunidad española
PHP - Comunidad española
9 de los participantes

Enlace para invitaciones: https://t.me/joinchat/B2gdShUFvCner-RgqRF43A En este grupo hablamos de PHP. Partner: es.switch-case.com