Tipo de Dados PHP e MYSQL

09/10/2013

0

PHP

Pessoal, boa tarde a todos.

Estou com uma dúvida, ela é mais teórica do que prática, mas, quem souber, por favor, explique-me isso.

Bem, desenvolvi o seguinte código:

$ALTURA = $mysql->getRow("SELECT id_altura FROM alturas WHERE altura = '$altura' AND unidade = '$unidade_altura'");

#se não encontrou, cadastra o valor e pega o último id
if(count($ALTURA) == 0){


$mysql->query("INSERT INTO alturas(altura,unidade) VALUES('$altura','$unidade_altura')");
$id_altura = $mysql->getResult("SELECT id_altura FROM alturas ORDER BY id_altura DESC");

}else{
$id_altura = $ALTURA['id_altura'];
}

Então, como viram acima, esse código é para verificar se um dado valor já existe na tabela ALTURAS. Se existir, ele apenas pega o ID do valor, se não, cadastra e pega o último id cadastrado. Estava ocorrendo o problema, que mesmo já tendo o valor cadastrado no banco de dados ele continuava cadastrando o valor, havendo repetição de valores, o que é uma coisa que eu estou tentando evitar o máximo possível.

Por exemplo, no banco já existia o valor 20.1. Eu colocava para cadastrá-lo, esse mesmo valor, e ele o repetia na tabela, gerando dois id's para esse valor.

Estou usando o MySQL

Para esse caso, como os valores podem ser flutuantes, eu configurei no MySQL para que ele fosse do tipo FLOAT. E estava dando esse erro. Alterei para o tipo VARCHAR, apenas para testar mesmo, e funcionou sem problemas. Ou seja, ele passou a reconhecer que o valor já estava cadastrado no sistema e apenas pega o id dele.

Alguém saberia me explicar o motivo disso?


Um abraço a todos!!!
Abraão Almeida

Abraão Almeida

Responder

Posts

09/10/2013

William

Colega, tive um problema parecido, na minha aplicação a separação decimal para valores monetários era com "," e no MySQL é com ".", então no meu caso o PHP gerava exemplo 21,0 e o banco constava 21.0.

Para efeitos de consulta isso pode acabar interferindo.

Fiz um replace nesse valor trocando "," para ".", veja se aplica ao seu caso!
Responder

09/10/2013

Abraão Almeida

Neste código, é que eu esqueci de informar inicialmente, eu já está utilizando um replace para alterar da ',' para o '.'.

Por isso, que continuo achando isso muito estranho!
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar