-1
My PHP page it updates all details of a sale, the code of UPDATE
affects the table itens_venda
of which it is composed of:
- Table
itens_venda
(of which I am updating)
CREATE TABLE itens_venda (
cd_itens_venda INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
cd_produto INT,
cd_funcionario INT,
cd_cliente INT,
tipo_pagamento VARCHAR(30),
CHECK (tipo_pagamento IN ('Pagamento á vista')),
valor_item DECIMAL(7,2),
quantidade INT,
valor_total DECIMAL(7,2),
data_venda TIMESTAMP(0),
FOREIGN KEY (cd_produto) REFERENCES produto (cd_produto),
FOREIGN KEY (cd_funcionario) REFERENCES funcionario (cd_funcionario),
FOREIGN KEY (cd_cliente) REFERENCES cliente (cd_cliente)
ON DELETE CASCADE
ON UPDATE CASCADE
);
Table details:
- Column
valor_total
is automatically filled in by a Trigger which calculates thevalor_item * quantidade
. - Column
data_venda
mark the current sale time with the functionCURRENT_TIMESTAMP()
. - These two columns above do not participate in the update code.
The error in my code is PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
- Error image
- PHP code
<?php
require_once '../conexao/conexao.php';
if(isset($_POST['Atualizar'])){
$cd_itens_venda = $_POST['cd_itens_venda'];
$cd_produto = $_POST['cd_produto'];
$cd_funcionario = $_POST['cd_funcionario'];
$cd_cliente = $_POST['cd_cliente'];
$tipo_pagamento = $_POST['tipo_pagamento'];
$valor_item = $_POST['valor_item'];
$quantidade = $_POST['quantidade'];
try {
$atualizacao = "UPDATE itens_venda SET cd_produto = :cd_produto,
cd_funcionario = :cd_funcionario, cd_cliente = :cd_cliente,
tipo_pagamento = : tipo_pagamento, valor_item = :valor_item,
quantidade = :quantidade WHERE cd_itens_venda = :cd_itens_venda";
$atualiza_dados = $conexao->prepare($atualizacao);
$atualiza_dados->bindValue(':cd_itens_venda',$cd_itens_venda);
$atualiza_dados->bindValue(':cd_produto',$cd_produto);
$atualiza_dados->bindValue(':cd_funcionario',$cd_funcionario);
$atualiza_dados->bindValue(':cd_cliente',$cd_cliente);
$atualiza_dados->bindValue(':tipo_pagamento',$tipo_pagamento);
$atualiza_dados->bindValue(':valor_item',$valor_item);
$atualiza_dados->bindValue(':quantidade',$quantidade);
$atualiza_dados->execute(); // LINHA EM QUE APONTA O ERRO
} catch (PDOException $falha_atualizacao) {
echo "A atualização não foi feita".$falha_atualizacao->getMessage();
}
}
$seleciona_vendas = $conexao->query("SELECT cd_itens_venda FROM itens_venda");
$resultado_vendas = $seleciona_vendas->fetchAll();
$seleciona_produto = $conexao->query("SELECT cd_produto, nome FROM produto");
$resultado_produto = $seleciona_produto->fetchAll();
$seleciona_funcionario = $conexao->query("SELECT cd_funcionario, nome FROM funcionario");
$resultado_funcionario = $seleciona_funcionario->fetchAll();
$seleciona_cliente = $conexao->query("SELECT cd_cliente, nome FROM cliente");
$resultado_cliente = $seleciona_cliente->fetchAll();
?>
typo
– user60252