Validando a consulta mysql de entrada de arquivo múltiplo

Meu cenário é assim:

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

Minha tabela de campo do banco de dados é:

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

Digamos que a linha id = 1 já teve valores inseridos anteriormente e se o usuário quiser atualizar a imagem1 e a imagem4 para que eles possam navegar e selecionar o arquivo de imagem desejado e deixar a imagem2 e a imagem3 em branco.

Aqui está o conceito depois de executar a consulta mysql:

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

Como faço a consulta de validação?

Atualmente meu código é assim e não tenho idéia de como continuar daqui, pois ainda sou novo no 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 isso esteja claro para vocês. Desde já, obrigado. =)

0
adicionado
Visualizações: 1

2 Respostas

Você poderia usar um contador para atualizar o campo correto:

 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");
   }
 }

Claro, isso significaria que você teria que atualizar o mesmo registro até quatro vezes, dependendo do que foi enviado do formulário. Além disso, você deve escapar da entrada do usuário usando algo como mysql_escape_string() .

1
adicionado
Obrigado pela ajuda. Se eu entendi corretamente, o campo SET $ está atualizando campos dependendo de quantas entradas eu tenho? Se eu tiver 4 entradas de arquivo, será chamada a atualização em 4 campos apenas por essa instrução? E é possível adicionar 1 a $ key? Porque o array começa de 0 certo? Ou a única maneira é editar meu campo de banco de dados?
adicionado o autor Dr3am3rz, fonte
Enfim, eu tentei e está funcionando !! Muito obrigado pela ajuda, foi preso por dois dias. = (Mas ainda descobrir como adicionar o valor da matriz $ key.
adicionado o autor Dr3am3rz, fonte
Hey obrigado muito !! Eu usei if ($ key <4) {$ key ++;} agora .. lol .. Mas eu vou usar o seu método. Muito obrigado!! = D
adicionado o autor Dr3am3rz, fonte
Eu já o marquei, mas não posso votar porque diz que preciso de 15 representantes para votar. = (
adicionado o autor Dr3am3rz, fonte
@ user1462863 - Atualizei minha resposta.
adicionado o autor Cyclonecode, fonte
@ user1462863 - Se esta resposta ajudá-lo a considerar a votação e marcá-la como correta.
adicionado o autor Cyclonecode, fonte

Eu acho que seria melhor você ter a tabela product_images . Desta forma, um produto pode ter 1 ou muitas imagens. Seu formulário poderia permanecer o mesmo, mas você só associaria o products.id a cada registro em sua nova tabela de imagens.

Ao adicionar um novo produto, você criará o produto e, em seguida, inserirá um registro de imagem para cada imagem carregada no formulário.

Ao editar um produto, você pode excluir fotos ou adicionar novas fotos com facilidade.

// 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 não devem ser usadas diretamente. Certifique-se de tomar as devidas precauções para evitar a injeção de SQL.

0
adicionado
Obrigado pela ajuda. Ainda não entendi, porque ainda tenho outro campo de entrada ao lado das imagens.
adicionado o autor Dr3am3rz, fonte