2
respostas

Diferença conceitual entre '{$preco}' e {$preco} - aspas simples

Bom dia, gostaria de saber qual a diferença conceitual para o PHP do comportamento das sentenças entre:

$query = "insert into produtos (nome, preco) values ('{$nome}', '{$preco}')";

possui aspas simples na variavel preço

e

$query = "insert into produtos (nome, preco) values ('{$nome}', {$preco})";

possui aspas simples na variável preço

Pois quando fui inserir no mysql com aspas simples aplicada na variável inseriu o registro, mesmo sem valor, porem sem as aspas simples, o registro não é inserido.

2 respostas

Oi Leandro, tudo bom?

Isso está mais relacionado ao MySql do que ao PHP.

O que acontece é que, para inserir um valor no banco, precisamos seguir a seguinte sintaxe:

$query = "insert into produtos (nome, preco) values ('Carro', '9000')";

Primeiro definimos os campos depois definimos os valores. No caso de não passarmos valor algum:

$query = "insert into produtos (nome, preco) values ('Carro', '')";

É identificado como um campo com valor vazio. Mas, se não houver as aspas:

$query = "insert into produtos (nome, preco) values ('Carro', )";

Será identificado como a falta de um argumento. A gente precisa passar algum valor, nem que seja vazio. Ou, caso o campo não seja obrigatório, podemos não definir o preco:

$query = "insert into produtos (nome) values ('Carro')";

Assim, a quantidade de parametros não será um problema =)

Uma outra possibilidade, caso o campo não seja obrigatório é passar null:

$query = "insert into produtos (nome, preco) values ('Carro', null)";

Espero ter ajudado =)

Qualquer dificuldade, compartilha com a gente!

Abraço e bons estudos.

Olá Leandro, acrescentando algo no que o André disse, usando php para fazer uma query, seria assim:

$query = "insert into produtos (nome, preco) values ('NomeProduto', preço)";

o porque usar '{$nome}', {$preco} é simples, quando a tabela foi criada no mysql o campo nome foi criado com o tipo varchar(string) e o preço int, quando usamos {} quer dizer que vamos inserir uma variavel, e para dizer que essa variavel é uma string temos que usar aspas simples (' '). Então quando vamos usar uma variavel string em uma query usamos '{$variavel}', e quando é normal só usarmo {}.

Abraços, espero ter ajudado