Tipo de Dados PHP e MYSQL
09/10/2013
0
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!!!
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
Curtir tópico
+ 0
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!
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!
Por isso, que continuo achando isso muito estranho!
Responder
Clique aqui para fazer login e interagir na Comunidade :)