-1
I have a if
which should verify that JOIN has a row with 3 columns of records in order to prevent a new registration of the same product and supplier, but does not verify.
I gave one var_dump()
in the $linha_qnt
and returns int(0)
The error is the line $linha_qnt = $seleciona_qnt->columnCount();
$cd_fornecedor = intval($_POST['cd_fornecedor']);
$cd_produto = intval($_POST['cd_produto']);
$procurar_fornecedor = "SELECT nome FROM fornecedor WHERE cd_fornecedor = :cd_fornecedor LIMIT 1";
$busca_fornercedor = $conexao->prepare($procurar_fornecedor);
$busca_fornercedor->bindValue(':cd_fornecedor', $cd_fornecedor);
$busca_fornercedor->execute();
$linha1 = $busca_fornercedor->fetch();
$nome_fornecedor = $linha1['nome'];
$procurar_produto = "SELECT nome, codigo_barra FROM produto WHERE cd_produto = :cd_produto LIMIT 1";
$busca_produto = $conexao->prepare($procurar_produto);
$busca_produto->bindValue(':cd_produto', $cd_produto);
$busca_produto->execute();
$linha2 = $busca_produto->fetch();
$nome_produto = $linha2['nome'];
$codigo_produto = $linha2['codigo_barra'];
$qnt_registro = "SELECT COUNT(fornecedor.nome) AS forn_nome,
COUNT(produto.nome) AS prod_nome, COUNT(produto.codigo_barra) AS prod_cod FROM compra_fornecedor
INNER JOIN fornecedor ON (fornecedor.cd_fornecedor = compra_fornecedor.cd_fornecedor)
INNER JOIN produto ON (produto.cd_produto = compra_fornecedor.cd_produto)
WHERE fornecedor.nome = {$nome_fornecedor} AND produto.nome = {$nome_produto}
AND produto.codigo_barra = {$codigo_produto} ";
$seleciona_qnt = $conexao->prepare($qnt_registro);
$seleciona_qnt->execute();
$linha_qnt = $seleciona_qnt->columnCount(); // ERRO
if ($linha_qnt != 0) {
echo "O fornecedor {$nome_fornecedor} já possui uma compra
cadastrada de {$nome_produto} com código de barra {$codigo_produto}.";
echo '<p><a href="../form_crud/form_insert_compra.php" title="Refazer operação"><button>Refazer operação</button></a></p>';
die;
}
qtn_registro
returns a query with 3 columns:forn_nome, prod_nome, prod_cod
. Each of them has onecount()
– Lawej
What is the result of
PDO::errorInfo()
before and after$linha_qnt = $seleciona_qnt->columnCount();
– Augusto Vasques