Insert Into Does Not Send Values

Asked

Viewed 79 times

-8

I have this code to send values to a table in the database, it is not displaying any, it is simply not sending values

<?php
include "../../lib/inc_con.php";



$mesa = $_POST['mesa'];
$tamanho = $_POST['tamanho'][0];
$quantidade = $_POST['qtd'];
if(empty($_POST['valor'])) { $adicional = "Nenhum"; } else { $adicional = implode(',', $_POST['valor']);  }
$hiddentotal = $_POST['hiddentotal'];
date_default_timezone_set('America/Sao_Paulo'); 
$mysqldata = new DateTime(); 
$data = $mysqldata->format(DateTime::ISO8601);
$hora = date('H:i:s');
$produto_id1 = $_POST['produto_id1'];
if (empty($_POST['observacao'])){ $observacao = "Nenhuma"; } else { $observacao = $_POST['observacao'];  }
$produzido = '0';
$valortotal = $quantidade * $hiddentotal;
$asplo = $_POST['asplo'];
$conta = '0';



$pdo=conectar();
$inserirpedido=$pdo->prepare("INSERT INTO pedidos FROM produtos(mesa,tamanho,qtd,adicional,valortotal,data,produto_id1,produzido,observacao,asplo,conta,hora,horadeproducao) VALUES ('$mesa', '$tamanho', '$quantidade', '$adicional', '$valortotal', '$data', '$produto_id1', '$produzido', '$observacao', '$asplo')");
$inserirpedido->execute();

?>
  • Check the error, if(!$inserirpedido->execute()){ print_r($inserirpedido->errorInfo());}

  • Take that FROM ...

  • I took the FROM products I had not seen but still not inserting

  • and the error that returned now with errorInfo is that the column count does not match the value count, I will check and I again make contact, thanks for the help.

  • That comment code, returned which error?

  • There are no columns associated for the last 3 values.

  • that’s right, I defined them only now he’s entering 2 identical records at once, you know why?

  • you call twice execute?

  • Negative, but you can let me take a look here, usually the mistakes they give are lack of attention my, obg for help, anything I create a new question...

Show 4 more comments

1 answer

3


No use to use a newer API and mint the old addicts(mysql_*), do not pass the values directly in the SQL statement, pass separated use placeholders to make the association.

Insert has two errors, one from lost

INSERT INTO pedidos FROM produtos

More columns than specified values.

"INSERT INTO pedidos(
mesa,
tamanho,
qtd,
adicional,
valortotal,
data,
produto_id1,
produzido,
observacao,
asplo,
conta,
hora,
horadeproducao) VALUES <---- 13 campos
('$mesa', 
'$tamanho',
'$quantidade',
'$adicional',
'$valortotal',
'$data',
'$produto_id1',
'$produzido',
'$observacao',
'$asplo')"  <--- 10 valores
         <--- e valores para conta, hora e horadeproducao?

The code with placesholders looks like this:

$inserirpedido = $pdo->prepare("INSERT INTO pedidos FROM produtos(mesa,tamanho,qtd,adicional,valortotal,data,produto_id1,produzido,observacao,asplo,conta,hora,horadeproducao) VALUES (:mesa, :tamanho, :quantidade, :adicional, :valortotal, :data, :produto_id1, :produzido, :observacao, :asplo, :conta, :hora, :horadeproducao)");

$inserirpedido->bindValue(':mesa', $mesa);
$inserirpedido->bindValue(':tamanho', $tamanho);
$inserirpedido->bindValue(':quantidade', $quantidade);
$inserirpedido->bindValue(':adicional', $adicional);
$inserirpedido->bindValue(':valortotal', $valortotal);
$inserirpedido->bindValue(':data', $data);
$inserirpedido->bindValue(':produto_id1', $produto_id1);
$inserirpedido->bindValue(':produzido', $produzido);
$inserirpedido->bindValue(':observacao', $observacao);
$inserirpedido->bindValue(':asplo', $asplo);
$inserirpedido->bindValue(':conta', $conta);
$inserirpedido->bindValue(':horadeproducao', $horadeproducao);
$inserirpedido->bindValue(':hora', $hora);

$inserirpedido->execute();

Related:

How to prevent SQL code injection into my PHP code

Using PDO is the safest way to connect to a PHP BD?

Browser other questions tagged

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