Get remaining data through array ID

0

How do I get the data that was not passed via $ _POST, but are already saved in the same table that I'm getting some data, such as ID, PRODUCT_NAME, etc. in an array, which receives data from multiple products. / p>

 //POST em array que recebo

$valor_unitario = $_POST['valorunitario'];
$nome-produto= $_POST['nome_produto'];
$quant_produto = $_POST['quant_produto'];
$subtotal = $_POST['subtotal'];
$id_produto = $_POST['id_produto'];


//AQUI INSERE OS ARRAYS NO BANCO DE DADOS, RECEBE OS PRODUTOS ADICIONADOS VIA POST (AQUI QUERO SALVAR O RESTANTE DOS CAMPOS DO PRODUTO ATRAVÉS DO ID DELES.
$i=0;
$sql= "INSERT INTO 'log_nfe_produtos' ('NOME_PRODUTO', 'VALOR_UNITARIO', 'QUANT_PRODUTO', 'SUBTOTAL', 'ID_EMPRESA','ID_NF') VALUES ";

foreach($nome_produto as $p){

$sql=$sql."('$p','$valor_unitario[$i]','$quant_produto[$i]','$subtotal[$i]','1','$cod_pedido[$i]'),";

$i++;

}

$sqlFinal = substr($sql, 0, strlen($sql)-1);

$sqlFinal2 = $conn->prepare("$sqlFinal");

$sqlFinal2->execute();
    
asked by anonymous 17.07.2017 / 02:06

1 answer

0

According to the Manual of PDO there is a feature called lastInsertId that aims to access the id of the last row or string value entered.

You can do this:

$stmt = $db->prepare("...");
$stmt->execute();
$id = $db->lastInsertId();

If you want to do it with SQL function instead of the PDO API, you would do this as a normal select query:

$stmt = $db->query("SELECT LAST_INSERT_ID()");
$lastId = $stmt->fetchColumn();

An example for your case would look like this:

$dados_persistidos = [];

foreach($nome_produto as $p){
    $sql = "INSERT INTO 'log_nfe_produtos' ('NOME_PRODUTO', 'VALOR_UNITARIO', 'QUANT_PRODUTO', 'SUBTOTAL', 'ID_EMPRESA','ID_NF') VALUES ";
    $sql .= "('$p','$valor_unitario[$i]','$quant_produto[$i]','$subtotal[$i]','1','$cod_pedido[$i]'),";
    $stmt = $conn->prepare($sql);
    $stmt->execute();
    /*
       Salva o último id inserido no banco no array 
       para posteriormente poder acessá-los
    */
    array_push($dados_persistidos, $db->lastInsertId());  
}

Then with the id's saved in the array $dados_persistidos , a simple select can be done like this:

$id_s = implode(',', $dados_persistidos);
$sql = 'SELECT * FROM 'log_nfe_produtos' WHERE id_log_nfe_produtos in ('.$id_s.')';
$consulta = $pdo->query($sql);
$resultados = $consulta->fetchAll(PDO::FETCH_ASSOC);
print_r($resultados);

I hope it helps you. And adjust the code to your need.

    
17.07.2017 / 15:34