Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Oi estou tentando passar um valor através de uma variável em uma query, porém não está mostrando o resultado que eu quero. Aqui eu pego o ultimo id do pedido <?php
while($row = $consulta_pedido2->fetch_assoc()){
echo $row['id_pedido']. }?> E aqui eu faço a query e passo variável... $query ="SELECT itempedido.id_itempedido, itempedido.valor,... itempedido.pedido_id = '$row'". No caso onde está a variável $row, se eu colocar o numero do pedido manualmente, me retorno os itens daquele pedido, agora com a variável não está mostrando, alguma ideia?@Felipe Guedes Coutinho
Boa tarde, retornou este erro:
Parse error: syntax error, unexpected '' (T_STRING) in C:\xampp\htdocs\teste\db.php on line 84
Tentei tambem colocar dentro da aspas simples e retornou outro erro
itempedido.pedido_id = '.$row ['id_pedido'] .'";
**Parse error**: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting '-' or identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in **C:\xampp\htdocs\teste\db.php** on line **84**@gramosiri2
O erro está no tipo da variável, no seu Banco de Dados "QUAL É O TIPO DA SUA COLUNA ITEMPEDIDO.PEDIDO_ID?"
É CHAR, VARCHAR, INT, FLOAT, DOUBLE?
Para te explicar como funciona, se for do TIPO STRING (CHAR ou VARCHAR) declarado no Banco de Dados, então ela deve estar entre aspas sim, mas a sintaxe fica assim.
$query ="SELECT
itempedido.id_itempedido,
itempedido.valor,
...
FROM itempedido
INNER JOIN produto ON
...
WHERE
itempedido.pedido_id = '".$row['id_pedido']."'";
Eu te explico o porque, você ABRIU o conteudo que você vai colocar dentro da variável $QUERY com ASPAS DUPLAS, então TUDO o que estiver dentro de ASPAS DUPLAS é o conteudo da variável $QUERY, quando você quer **CONCATENAR **com uma variável PHP exeplo $row['id_pedido'], você deve FECHAR as ASPAS DUPLAS e colocar um " . " (PONTO) para dizer que depois do conteudo que está entre ASPAS DUPLAS você está concatenando com uma VARIÁVEL **PHP**, por isso eu coloquei no primeiro exemplo **".$row ['id_pedido']**
Isso se a sua COLUNA ID_PEDIDO no Banco de Dados for uma variável NUMÉRICA.
AGORA se a sua variável no banco de dados for uma variável do tipo ALPHANUMÉRICA, então devemos colocar dentro da STRING da $QUERY o conteudo entre ASPAS SIMPLES para que o Banco de Dados possa identificar no EXEC SELECT o que é ALPHANUMÉRICO ou NUMÉRICO.
Então neste caso fica como o exemplo que lhe passei acima.
Abrimos o que vamos colocar dentro da variável $QUERY com ASPAS DUPLAS e ainda dentro das ASPAS DUPLAS colocamos a nossa ASPAS SIMPLES para dizer que o conteudo que vem depois do = é um ALPHANUMÉRICO, então fechamos as ASPAS DUPLAS, concatenamos com a variável PHP com o PONTO e em seguida precisamos concatenar a STRING com a ASPAS SIMPLES para fechar o conteudo da VARIÁVEL, então a diferença é essa.
COLUNA ID_PEDIDO = ALPHANUMÉRICO COMANDO.
pedido_id = ".$row['id_pedido'];
COLUNA ID_PEDIDO = NUMÉRICA COMANDO.
pedido_id = '".$row['id_pedido']."'";
Bom, é isso, só um detalhe que observei, você tem
pedido_id e id_pedido na sua tabela?
Esta correto mesmo?
Reveja a sua BASE DE DADOS e tente executar o comando diretamente dentro do Banco de Dados e veja qual erro lhe retorna.
Se você estiver com dificuldades, poste aqui a estrutura da sua tabela, tipo esta que segue em anexo.
/monthly_2019_10/image.png.c22183eb868b413669194f0b2beeec12.png" />
Assim podemos montar com precisão o seu comando.
Espero ter ajudado.
Att.
***Felipe Coutinho***@Felipe Guedes Coutinho cara, deu certo do jeito que você mencionou.
Agora sobre sua pergunta, a coluna pedido_id é da tabela itempedido e a coluna id_pedido é da tabela pedido. Isso é para mostrar o último pedido e os itens de pedido selecionados pelo usuário.
Obrigado.
@gramosiri2
Sucesso então.
Tranquilo, perguntei porque achei estranho, talvez você deva estudar um pouco sobre "modelo de dados", pois nomenclatura para Banco de Dados é de grande importância, como você que está construindo fica um pouco tranquilo enquanto está desenvolvendo, mas se você deixar de mexer por um periodo, você pode ter que rever o conceito para relembrar as regras, os campos das colunas devem ser intuidivos, tanto para você quanto para qualquer um que não seja você a dar manutenção no sistema.
Só uma dica, mas que bom que funcionou.
Não esquece de dar um +REP, valeu.
Espero ter ajudado.
Att.
Felipe Coutinho
@Felipe Guedes Coutinho deu certo, porém se eu tentar inserir algum item ele não insere no banco...
Estou achando que é no while, pois quando tiro ele, insere os elementos no banco normalmente
while($row = $consulta_pedido2->fetch_assoc()){
echo $row['id_pedido']."<br>";
$query ="SELECT
itempedido.id_itempedido,
itempedido.valor,
itempedido.quantidade,
itempedido.pedido_id,
cliente.nome,
produto.marca,
produto.unidade,
produto.preco,
pedido.observacoes,
pedido.data_pedido,
produto.nome itempedido.pedido_id = '".$row['id_pedido']."'";
}
$consulta_item_pedido = mysqli_query($conexao, $query);@gramosiri2
Poste o código completo, pois acho que existe um erro na sua lógica.
Um comando não interfere no outro a não ser que você utilize a mesma variável de armazenamento da QUERY para executar, então, para que possa ser feito uma melhor análise, poste o código completo para que seja possível entender o que a sua página faz e achar o erro.
Att.
Felipe Coutinho
@Felipe Guedes Coutinho Deu certo aqui. Estava usando a mesma variável na query e chamando ela duas vezes... rsrs. Valeu.
@gramosiri2
Experimente usar o código como abaixo:
FROM itempedido INNER JOIN produto ON ... WHERE