rafaelzis 0 Denunciar post Postado Setembro 21, 2015 Estou tentando criar uma function que cria um "album" de imagens. O input 1 cadastra a capa na tabela capa e o input 2 aceita multiplos arquivos. Até então a function funciona perfeitamente porem na hora de registrar o arquivo no banco de dados o mesmo só registra 1 arquivo e move todos para a pasta destino. Já fiz var_dump($inserir); para ver o resultado e notei que as querys sao criadas normalmente e simultaneamente porem só uma delas é registrada no banco. O HTML: <?php //Chama a função inserir caso tenha algum dado em POST (includes/conexao) if (isset($_POST['salvar'])) { criar_album('albumImagens', 'capa', $_POST); } ?> <form class="form-horizontal" method="POST" action="" enctype="multipart/form-data" runat="server" /> <fieldset> <legend>Nova imagem</legend> <div class="form-group"> <label class="col-md-3 control-label" for="nome">Nome</label> <div class="col-md-6"> <input name="nome" type="text" placeholder class="form-control input-md" required /> </div> </div> <!-- Text input --> <div class="form-group"> <div id="thumbnail"> </div> <label class="col-md-3 control-label" for="capa">Capa:</label> <div class="col-md-4"> <input type="file" name="capa" id="capa" class="form-control" required> </div> </div> <!-- Text input--> <div class="form-group"> <label class="col-md-3 control-label" for="imagem">Album:</label> <div class="col-md-4"> <input type="file" name="imagem[]" id="imagem" class="form-control" required multiple /> </div> </div> <!-- Button --> <div class="form-group"> <label class="col-md-3 control-label" for="salvar"></label> <div class="col-md-5"> <button type="submit" id="salvar" name="salvar" class="btn btn-primary btn-lg">Salvar</button> </div> </div> </fieldset> </form> A function: function criar_album($album, $destaque, $dados){ $con = conectar(); // Cria a conexao dentro da function $caminho = 'uploads/'; // caminho para a imagem $nome = $_POST['nome']; // Nome do album $qtd = count($_FILES["imagem"]["name"]); // Quantidade de arquivos selecionados (album) if ($qtd > 0){ $nomeArquivoCapa = $_FILES["capa"]["name"]; // Nome do arquivo $nomeTemporarioCapa = $_FILES["capa"]["tmp_name"]; // Nome temporário do arquivo $tamanhoArquivoCapa = $_FILES["capa"]["size"]; // Tamanho do arquivo if(empty($nomeArquivoCapa)){ // se não existir arquivo exibi o erro. echo '<div class="alert alert-danger" role="alert">Erro, capa nao inserida!</div>'; return; } $arquivoArrayCapa = explode(".", $nomeArquivoCapa); // Separa o nome do arquivo da extensão $extensaoCapa = end($arquivoArrayCapa); // Pega a extensão do arquivo. $arquivoCapa = $caminho.md5(time().rand(3212, 15452)).'.'.$extensaoCapa; // Junta o nome do arquivo criptografado (evitar mesmo nome) e junta com a extensão if (move_uploaded_file($nomeTemporarioCapa, $arquivoCapa)) { // Move a imagem da capa para a pasta e inseri no banco de dados. $inserir = $con->prepare("INSERT INTO $destaque(nome, imagem) VALUES('$nome', '$arquivoCapa')"); $inseri = $inserir->execute(); // Execute a inserção $last = $con->lastInsertId(); // Pega o ID que foi inserido para fazer relação na tabela albumImagens } else{ echo '<div class="alert alert-danger" role="alert">Erro, tente novamente mais tarde!</div>'; } for ($i=0; $i < $qtd; $i++) { // Inicia loop para inserir mais de 1 imagem. $nomeArquivo = $_FILES["imagem"]["name"][$i]; $nomeTemporario = $_FILES["imagem"]["tmp_name"][$i]; $tamanhoArquivo = $_FILES["imagem"]["size"][$i]; if (!empty($nomeArquivo)) { // Verifica se existe arquivo $arquivoArray = explode(".", $nomeArquivo); // Separa o nome do arquivo da extensão $extensao = end($arquivoArray); // Pega a extensão do arquivo. $arquivo = $caminho.md5(time().rand(3212, 15452)).'.'.$extensao; // Junta o nome do arquivo criptografado (evitar mesmo nome) e junta com a extensão if (move_uploaded_file($nomeTemporario, $arquivo)) { // Move o arquivo para a pasta e cadastra no banco de dados. $inserir = $con->prepare("INSERT INTO $album(idCapa, imagem) VALUES($last, '$arquivo')"); // O erro acontece aqui!!!! $inserir->execute(); }else{ echo '<div class="alert alert-danger" role="alert">Erro, tente novamente mais tarde!</div>'; } } } echo '<div class="alert alert-success" role="alert">Salvo com sucesso!</div>'; } } Compartilhar este post Link para o post Compartilhar em outros sites
Dorian Neto 41 Denunciar post Postado Setembro 21, 2015 http://stackoverflow.com/questions/1176352/pdo-prepared-inserts-multiple-rows-in-single-query Compartilhar este post Link para o post Compartilhar em outros sites