Mysql insert with "Link" between inserts

Asked

Viewed 27 times

2

I’m in big trouble here.

I need to upload multiple files and insert them into different tables.

The products table contains the details of the products and the photos table the files to access the images, only I need to relate them according to the ID, how do I insert the photos in another table with the product id of the first table?

<?php
if(isset($_POST['submitProduto'])){

//Caminho para salvar
$caminho = "uploads/";

$produto = trim($_POST["produto"]);
$informacao = trim($_POST["informacao"]);
$categoria = trim($_POST['categoria']);
$subCategoria = $_POST['subCategoria'];

// Verifica Checkbox
if (isset($_POST['destaque'])) {
    $destaque = 1;
}
else {
    $destaque = 0;
}


//Inseri imagem
for ($i = 0; $i < count($_FILES["fotos"]["name"]); $i++) {

    $nomeArquivo = $_FILES["fotos"]["name"][$i];
    $tamanhoArquivo = $_FILES["fotos"]["size"][$i];
    $nomeTemporario = $_FILES["fotos"]["tmp_name"][$i];

    if (!empty($nomeArquivo)) {

        $arquivoArray= explode(".", $nomeArquivo);
        $extensao = end($arquivoArray);

        $arquivo = $caminho.md5(time().rand(3212, 12043)).'.'.$extensao;

        move_uploaded_file($nomeTemporario, $arquivo);

        // lastInserId
        $last = $database::insert_id();

        $database::query("INSERT INTO produtos (nome,descricao,categoria,destaque, sub_categoria) VALUES ('".$produto."', '".$informacao."','".$categoria."','".$destaque."', '".$subCategoria."')");
        $database::query("INSERT INTO produtos_fotos (id_produto, imagem) VALUES ('".$last."', '".$arquivo."')");

        }
    }

$message = '<div class="alert alert-success text-center">Produtos cadastrados com sucesso!</div>';

}
?>
  • Put the source code too

  • ready @rray already added, what I want is to insert the details in the product table and that the id_product of the products table_photos are the same.

  • After the first Insert, call the function mysql_insert_id it will return the id of the entered record, then take it and record in the second Insert.

  • mysql_inser_id no longer works and if I use it it will get the last id inserted in the products table_photos and not in the products table.

1 answer

3


You need to leave out the first Insert, and inside the is yes put the image Insert... otherwise it will repeat various product Inserts.

if(isset($_POST['submitProduto'])){

    //Caminho para salvar
    $caminho = "uploads/";

    $produto = trim($_POST["produto"]);
    $informacao = trim($_POST["informacao"]);
    $categoria = trim($_POST['categoria']);
    $subCategoria = $_POST['subCategoria'];

    // Verifica Checkbox
    if (isset($_POST['destaque'])) {
        $destaque = 1;
    }
    else {
        $destaque = 0;
    }


    //Inseri imagem
    $sqlInsere = $database::query("INSERT INTO produtos (nome,descricao,categoria,destaque, sub_categoria) VALUES ('".$produto."', '".$informacao."','".$categoria."','".$destaque."', '".$subCategoria."')");

    $sqlUltimoID = $database::query("SELECT * FROM produtos ORDER BY id LIMIT 0 , 1");
    $rowUltimoID = $database::row($sqlUltimoID);

    // lastInserId
    $last = $rowUltimoID['id'];


    for ($i = 0; $i < count($_FILES["fotos"]["name"]); $i++) {

        $nomeArquivo = $_FILES["fotos"]["name"][$i];
        $tamanhoArquivo = $_FILES["fotos"]["size"][$i];
        $nomeTemporario = $_FILES["fotos"]["tmp_name"][$i];

        if (!empty($nomeArquivo)) {

            $arquivoArray= explode(".", $nomeArquivo);
            $extensao = end($arquivoArray);

            $arquivo = $caminho.md5(time().rand(3212, 12043)).'.'.$extensao;

                if(move_uploaded_file($nomeTemporario, $arquivo)){
                    $database::query("INSERT INTO produtos_fotos (id_produto, imagem) VALUES ('".$last."', '".$arquivo."')");
                } else {
                    echo "Não foi possível enviar a imagem";    
                }
        }
    }

$message = '<div class="alert alert-success text-center">Produtos cadastrados com sucesso!</div>';

}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.