Fala Ivan,
Tranquilo?
Então, infelizmente algumas coisas a gente acaba aprendendo na decoreba, mas é muito bom no seu caso de tentar entender o motivo de tal linha estar lá, vamos lá:
$query = "insert into produtos (nome, preco) values ('{$nome}', {$preco})";
No PHP é possível incluir variáveis dentro de uma string sem precisar concatenar, para economizar código, segue o mesmo exemplo se tivéssemos que concatenar a string com as variáveis.
$query = "insert into produtos (nome, preco) values ('"
. $nome . "', " . $preco . ")";
Note que ela ficou maior, e até mais confusa com um monte de aspas duplas e aspas simples, por isso no PHP existe um atalho, as chaves {}
, por isso no código está apenas {$nome}
ao invés de "
. $nome . "
Agora sobre o {$nome}
estar entre aspas simples, isso já é uma necessidade do SQL, os campos das tabelas que são texto precisam estar entre aspas simples, assim na hora de ler o comando SQL ele sabe onde começa e termina o campo, pois como é um campo texto, pode haver comandos e caracteres dentro dele que são usados no SQL, como a virgula, se ele não tivesse aspas, e no seu nome tivesse uma vírgula, o SQL não saberia quando termina o nome e quando começa o preço, como no exemplo abaixo:
INSERT INTO PRODUTOS (NOME, PRECO) VALUES ('NOME DO PRODUTO, E SEU COMPLEMENTO', 200.00)
INSERT INTO PRODUTOS (NOME, PRECO) VALUES (NOME DO PRODUTO, E SEU COMPLEMENTO, 200.00)
Na primeira linha o SQL vai saber que o nome é NOME DO PRODUTO, E SEU COMPLEMENTO
, já na segunda linha, sem aspas ele vai achar que o nome é apenas NOME DO PRODUTO
, e que o preço é E SEU COMPLEMENTO
, e além de dar erro por não ser do tipo do campo do preço (está indo um texto no lugar de um valor), o SQL vai acusar um outro erro, falando que você está passando 200.00
e não está falando qual é o campo à que ele se refere.
Espero ter ajudado!
Abraços!